稻花香

软件开发,喜欢读书,编程,禅修

golang服务端http实现原理

07 Mar 2024 » golang

服务端 Server

img

主要有这些流程:

  • 注册handler到map中,map的key是键值路由

  • handler注册完之后就开启循环监听,监听到一个连接就会异步创建一个 Goroutine

  • 在创建好的 Goroutine 内部会循环的等待接收请求数据

  • 接受到请求后,根据请求的地址去处理器路由表map中匹配对应的handler,然后执行handler

监听和服务启动

img

net.Listen 实现了TCP协议上监听本地的端口8080 (ListenAndServe()中传过来的),Server.Serve接受 net.Listener实例传入,然后为每个连接创建一个新的服务goroutine

使用net.Listen函数实现网络监听需要经过以下几个步骤:

  • 调用net.Listen函数,指定网络类型和监听地址。

  • 使用listener.Accept函数接受客户端的连接请求。

  • 在一个独立的goroutine中处理每个连接。

  • 在处理完连接后,调用conn.Close()来关闭连接

参考链接:[图文吃透Golang net/http 标准库][server] [server]: https://mp.weixin.qq.com/s/e7Z_kZrayTFx7y0hlzoTdg