zinx icon indicating copy to clipboard operation
zinx copied to clipboard

socket读写放到一个go里面实现,这样是不是效率更好

Open tlchun opened this issue 6 years ago • 1 comments

tlchun avatar Apr 26 '19 06:04 tlchun

//启动连接,让当前连接开始工作
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处理。

aceld avatar Apr 29 '19 06:04 aceld