コード例 #1
0
ファイル: MessageCenter.cs プロジェクト: jinq0123/kaka-socket
 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);
             }
         }
     }
 }
コード例 #2
0
ファイル: UIMainScene.cs プロジェクト: zhenghan2017/2018
        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();
        }
コード例 #3
0
ファイル: SocketManager.cs プロジェクト: zhenghan2017/2018
    /// <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;
            }
        }
    }