diff --git a/logic/service/player/pack.go b/logic/service/player/pack.go index c52e6370a..9546b56b8 100644 --- a/logic/service/player/pack.go +++ b/logic/service/player/pack.go @@ -74,8 +74,21 @@ func (h *ClientData) Recv(data common.TomeeHeader) { tt1 := ptrValue.Elem().Addr().Interface() // fmt.Println(tt1) err := struc.Unpack(bytes.NewBuffer(data.Data), tt1) + playerconn, cok := h.Conn.Context().(*ClientData) + if !cok { //如果链接断开,就返回 + return + } if err != nil { + + head := common.NewTomeeHeader(1001, data.UserID) + + head.Result = uint32(errorcode.ErrorCodes.ErrIllegalLanguage) + + // 实际上这里有个问题,会造成重复保存问题 + + playerconn.SendPack(head.Pack(nil)) h.Conn.Close() + fmt.Println(data.UserID, data.CMD, "解包失败,", hex.EncodeToString(data.Data)) return } @@ -108,15 +121,11 @@ func (h *ClientData) Recv(data common.TomeeHeader) { return } - t, cok := h.Conn.Context().(*ClientData) - if !cok { //如果链接断开,就返回 - return - } if ok && aa != 0 { //这里实现回复错误包 glog.Info(context.Background(), data.UserID, data.CMD, aa.Code()) - t.SendPack(data.Pack(nil)) + playerconn.SendPack(data.Pack(nil)) return @@ -125,7 +134,7 @@ func (h *ClientData) Recv(data common.TomeeHeader) { t1 := data.Pack(ret[0].Interface()) //cool.Loger.Debug(context.Background(), "发送数据_回包", data.UserID, data.CMD, ret[0].Interface(), hex.EncodeToString(t1)) //data.Version = 49 - t.SendPack(t1) + playerconn.SendPack(t1) }