private void ProcessUnSeriMsgs(byte[] data) { var unSeriMsgs = ProtoSerAndUnSer.UnSerialize <SCServerRes>(data); OpCodeType opCode = unSeriMsgs.RtCode; StaticData.DebugGreen($"WebSocket Receive opCode:{opCode.ToString()}"); IMessage msg = ListOPRelation.GetRealMessageByOpCodeType(opCode, unSeriMsgs.Data.ToByteArray()); Debug.Log("ProcessUnSeriMsgs opCode = " + (int)opCode); Debug.Log("unSeriMsgs.Code = " + unSeriMsgs.Code); int code = (int)opCode; if (code >= 50000) { //账号被挤掉了 switch (code) { case 50020: //账户被挤掉 PushSystemAccountWasSqueezed(); break; case 60000: //服务器强制更新 ServerForcedUpdate(); break; default: //服务器推送 RigisterCmdPush.PushMsgHandle(msg, (int)opCode); break; } } else { //判定队列中是否有,如果没有,直接丢弃 if (QueueMsgBuiness.Count > 0) { if (QueueMsgBuiness.Peek().opCode != opCode) { return; } } if (QueueMsgBuiness.Count <= 0) //队列中没有东西,但是收到了返回 { //重置 SetOnceMessageCompelete(); return; } //出队 if (msg != null) { StaticData.DebugGreen($"WebSocket msg:{msg.ToString()} Dequeue"); } else { StaticData.DebugGreen($"==========消息返回:{QueueMsgBuiness.Peek().opCode}为null!"); } var msgItem = QueueMsgBuiness.Dequeue(); SetOnceMessageCompelete(); //正常请求 if (unSeriMsgs.Code != (int)WebErrorCode.Success) { ErrorInfo error = new ErrorInfo() { webErrorCode = (WebErrorCode)unSeriMsgs.Code, ErrorMessage = $"服务器异常{unSeriMsgs.Code}" }; msgItem.onFail(error); } else { msgItem.onSuccess((msg)); } } }