zinx
zinx copied to clipboard
socket读写放到一个go里面实现,这样是不是效率更好
//启动连接,让当前连接开始工作
func (c *Connection) Start() {
//1 开启用户从客户端读取数据流程的Goroutine
go c.StartReader()
//2 开启用于写回客户端数据流程的Goroutine
go c.StartWriter()
//按照用户传递进来的创建连接时需要处理的业务,执行钩子方法
c.TcpServer.CallOnConnStart(c)
}
这是connection.go的代码, 目前的socket读写就是分别在这两个go里面完成的,实际上现在就是一个连接过来,会针对这个客户端socket创建两个go,一个reader go, 读完之后,从路由中取业务处理, 一个是 writer go, 将要写给客户端的数据,发送给worker pool处理。