```
fix(socket): 修复TCP连接处理逻辑与数据包解析问题 - 在 `ServerEvent.go` 中,移除无效的错误连接计数逻辑,明确标识 TCP 连接并直接调用 `handleTcp` - 优化 `handleTcp` 方法中对数据解析的处理,避免空数据提交到工作池 - 在 `SocketCodec_Tomee.go` 中将 `maxBodyLen` 常量提升为包级常量,便于复用和管理 - 重构 `Decode` 方法的数据读取逻辑,确保包体正确解析并丢弃已处理数据 - 移除冗余代码和注释,提高可读性和健壮性 ```
This commit is contained in:
@@ -45,7 +45,7 @@ func (s *Server) OnClose(c gnet.Conn, _ error) (action gnet.Action) {
|
||||
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
fmt.Println("Recovered in f", r)
|
||||
fmt.Println("Recovered in onclose", r)
|
||||
}
|
||||
}()
|
||||
atomic.AddInt64(&s.connected, -1)
|
||||
@@ -53,9 +53,9 @@ func (s *Server) OnClose(c gnet.Conn, _ error) (action gnet.Action) {
|
||||
v, ok := c.Context().(*player.ClientData)
|
||||
|
||||
if ok && v.Player != nil {
|
||||
cool.Loger.Info(context.TODO(), "准备保存", v.Player.Info.UserID)
|
||||
//cool.Loger.Info(context.TODO(), "准备保存", v.Player.Info.UserID)
|
||||
v.Player.Save() //保存玩家数据
|
||||
cool.Loger.Info(context.TODO(), "保存完成", v.Player.Info.UserID)
|
||||
//cool.Loger.Info(context.TODO(), "保存完成", v.Player.Info.UserID)
|
||||
if v.CloseChan != nil {
|
||||
close(v.CloseChan)
|
||||
}
|
||||
@@ -95,7 +95,7 @@ func (s *Server) OnOpen(conn gnet.Conn) (out []byte, action gnet.Action) {
|
||||
func (s *Server) OnTraffic(c gnet.Conn) (action gnet.Action) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
fmt.Println("Recovered in f", r)
|
||||
fmt.Println("Recovered in OnTraffic", r)
|
||||
}
|
||||
}()
|
||||
if s.network != "tcp" {
|
||||
|
||||
Reference in New Issue
Block a user