Closed xuhuaiqu closed 4 years ago
如下 使用了一个全局变量来存储某个房间的客户端 var clients = make(map[string]map[gate.Agent]struct{}) 后面给单个用户写消息时,客户端有部分消息会收不到。框架这里也没有捕获到异常信息。 小白请教:为啥这里的错误不返回到上级处理呢?
func BordCastInitCard(RoomId string, UserId string, Msg *msg.InitCardBrod) { for a, _ := range clients[RoomId] { userData := a.UserData() if userData != nil { agentData := userData.(*data.UserData) if agentData.UserId == UserId { a.WriteMsg(Msg) } } } } func (a *agent) WriteMsg(msg interface{}) { if a.gate.Processor != nil { data, err := a.gate.Processor.Marshal(msg) if err != nil { log.Error("marshal message %v error: %v", reflect.TypeOf(msg), err) return } err = a.conn.WriteMsg(data...) if err != nil { log.Error("write message %v error: %v", reflect.TypeOf(msg), err) } } }
在 Leaf 实际运行中,我没有遇见,也没有听到上线游戏反馈你说的问题。在没有修改 Leaf 代码的情况下,不会出现消息收不到和 recover 的问题。可以考虑一下几个方面:
好的 感谢
如下 使用了一个全局变量来存储某个房间的客户端 var clients = make(map[string]map[gate.Agent]struct{}) 后面给单个用户写消息时,客户端有部分消息会收不到。框架这里也没有捕获到异常信息。 小白请教:为啥这里的错误不返回到上级处理呢?