void Update() { while (_netMessageDataQueue.Count > 0) { lock (_netMessageDataQueue) { sEvent_NetMessageData tmpNetMessageData = _netMessageDataQueue.Dequeue(); if (_netMessage_EventList.ContainsKey(tmpNetMessageData._eventType)) { _netMessage_EventList[tmpNetMessageData._eventType](tmpNetMessageData._eventData); } } } }
private void RespRoomInfoCall(sEvent_NetMessageData data) { if ((GameLogicPro)data._eventType == GameLogicPro.CMD_GAME_RESPJOINROOM) { } else if ((GameLogicPro)data._eventType == GameLogicPro.CMD_GAME_RESPCREATEROOM) { } else { return; } MessageCenter.RemoveListener <sEvent_NetMessageData>(MsgDefine.Msg_RespNetMessage, RespRoomInfoCall); JoinRoom(); }
/// <summary> /// 接受网络数据 /// </summary> private void _onReceiveSocket() { while (true) { if (!clientSocket.Connected) { _isConnected = false; _ReConnect(); break; } try { int receiveLength = clientSocket.Receive(_tmpReceiveBuff); if (receiveLength > 0) { _databuffer.AddBuffer(_tmpReceiveBuff, receiveLength); //将收到的数据添加到缓存器中 while (_databuffer.GetData(out _socketData)) //取出一条完整数据 { sEvent_NetMessageData tmpNetMessageData = new sEvent_NetMessageData(); tmpNetMessageData._eventType = _socketData._protocallType; tmpNetMessageData._eventData = _socketData._data; //锁死消息中心消息队列,并添加数据 lock (MessageCenter.eventTable) { Debug.Log(tmpNetMessageData._eventType); //这里是否需要区分游戏协议和大厅协议 MessageCenter.Broadcast(MsgDefine.Msg_RespNetMessage, tmpNetMessageData); } } } } catch (System.Exception e) { Debug.Log(e); clientSocket.Disconnect(true); clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); break; } } }