func newSession(stream *ltvStream, eq cellnet.EventQueue, p cellnet.Peer) *ltvSession { self := <vSession{ stream: stream, p: p, needNotifyWrite: true, sendList: NewPacketList(), } // 使用peer的统一设置 self.stream.maxPacketSize = p.MaxPacketSize() // 布置接收和发送2个任务 // bug fix感谢viwii提供的线索 self.endSync.Add(2) go func() { // 等待2个任务结束 self.endSync.Wait() // 在这里断开session与逻辑的所有关系 if self.OnClose != nil { self.OnClose() } }() // 接收线程 go self.recvThread(eq) // 发送线程 go self.sendThread() return self }
func InstallServer(p cellnet.Peer) { // 服务端 socket.RegisterSessionMessage(p, "coredef.RemoteCallREQ", func(content interface{}, ses cellnet.Session) { msg := content.(*coredef.RemoteCallREQ) p.CallData(&response{ ses: ses, req: msg, }) }) }