コード例 #1
0
ファイル: NetWorkSystem.cs プロジェクト: yqxflong/DashFire
        private void OnConnected(NetConnection conn)
        {
            m_Connection  = conn;
            m_IsConnected = true;
            Msg_CR_ShakeHands bd = new Msg_CR_ShakeHands();

            bd.auth_key = m_Key;
            SendMessage(bd);
        }
コード例 #2
0
        internal void Dispatch(int id, object msg, NetConnection conn)
        {
            try {
                // 特殊处理认证消息
                if (id == (int)RoomMessageDefine.Msg_CR_ShakeHands)
                {
                    Msg_CR_ShakeHands shakehandsMsg = msg as Msg_CR_ShakeHands;
                    if (shakehandsMsg == null)
                    {
                        return;
                    }
                    bool ret = RoomPeerMgr.Instance.OnPeerShakeHands(shakehandsMsg.auth_key, conn);
                    Msg_RC_ShakeHands_Ret builder = new Msg_RC_ShakeHands_Ret();
                    if (ret)
                    {
                        builder.auth_result = Msg_RC_ShakeHands_Ret.RetType.SUCCESS;
                        IOManager.Instance.SendMessage(conn, RoomMessageDefine.Msg_RC_ShakeHands_Ret, builder);
                    }
                    else
                    {
                        builder.auth_result = Msg_RC_ShakeHands_Ret.RetType.ERROR;
                        IOManager.Instance.SendUnconnectedMessage(conn, RoomMessageDefine.Msg_RC_ShakeHands_Ret, builder);
                        conn.Disconnect("disconnect");
                    }
                    return;
                }

                RoomPeer peer = RoomPeerMgr.Instance.GetPeerByConnection(conn);
                // 没有认证连接的消息不进行处理
                if (peer == null)
                {
                    Msg_RC_ShakeHands_Ret builder = new Msg_RC_ShakeHands_Ret();
                    builder.auth_result = Msg_RC_ShakeHands_Ret.RetType.ERROR;
                    IOManager.Instance.SendUnconnectedMessage(conn, RoomMessageDefine.Msg_RC_ShakeHands_Ret, builder);

                    conn.Disconnect("unauthed");
                    LogSys.Log(LOG_TYPE.DEBUG, "unauthed peer {0} got message {1}, can't deal it!", conn.RemoteEndPoint.ToString(), msg.ToString());
                    return;
                }

                // 直接转发消息(或进行其它处理)
                MsgHandler msghandler;
                if (m_DicHandler.TryGetValue(id, out msghandler))
                {
                    msghandler(msg, peer);
                }
                if (msg is Msg_Ping)
                {
                    return;
                }

                // 消息分发到peer
                RoomPeerMgr.Instance.DispatchPeerMsg(peer, id, msg);
            } catch (Exception ex) {
                LogSys.Log(LOG_TYPE.ERROR, "Exception {0}\n{1}", ex.Message, ex.StackTrace);
            }
        }
コード例 #3
0
        private void OnConnected(NetConnection conn)
        {
            m_Connection     = conn;
            m_IsConnected    = true;
            m_ReconnectCount = 0;

            Msg_CR_ShakeHands bd = new Msg_CR_ShakeHands();

            bd.auth_key = Key;
            SendMessage(RoomMessageDefine.Msg_CR_ShakeHands, bd);

            m_LastShakeHandsTime = TimeUtility.GetLocalMilliseconds();
            m_WaitShakeHands     = true;
        }
コード例 #4
0
        internal void Dispatch(object msg, NetConnection conn)
        {
            try
            {
                // 特殊处理机器人系统消息

                /*if (msg.GetType() == typeof(Lobby_RoomServer.Msg_LR_CreateBattleRoom)) {
                 * LobbyMsgHandler lobby_msghandler;
                 * if (m_SpecialHandlers.TryGetValue(msg.GetType(), out lobby_msghandler)) {
                 *  lobby_msghandler.Invoke(msg, conn);
                 * }
                 * return;
                 * }*/

                // 特殊处理认证消息
                if (msg.GetType() == typeof(Msg_CR_ShakeHands))
                {
                    Msg_CR_ShakeHands shakehandsMsg = msg as Msg_CR_ShakeHands;
                    if (shakehandsMsg == null)
                    {
                        return;
                    }
                    bool ret = RoomPeerMgr.Instance.OnPeerShakeHands(shakehandsMsg.auth_key,
                                                                     conn);
                    Msg_RC_ShakeHands_Ret builder = new Msg_RC_ShakeHands_Ret();
                    if (ret)
                    {
                        builder.auth_result = Msg_RC_ShakeHands_Ret.RetType.SUCCESS;
                        IOManager.Instance.SendMessage(conn, builder);
                    }
                    else
                    {
                        builder.auth_result = Msg_RC_ShakeHands_Ret.RetType.ERROR;
                        IOManager.Instance.SendUnconnectedMessage(conn, builder);
                    }
                    return;
                }

                RoomPeer peer = RoomPeerMgr.Instance.GetPeerByConnection(conn);
                // 没有认证连接的消息不进行处理
                if (peer == null)
                {
                    Msg_RC_ShakeHands_Ret builder = new Msg_RC_ShakeHands_Ret();
                    builder.auth_result = Msg_RC_ShakeHands_Ret.RetType.ERROR;
                    IOManager.Instance.SendUnconnectedMessage(conn, builder);

                    conn.Disconnect("unauthed");
                    LogSys.Log(LOG_TYPE.DEBUG, "unauthed peer {0} got message {1}, can't deal it!", conn.RemoteEndPoint.ToString(), msg.ToString());
                    return;
                }

                // 直接转发消息(或进行其它处理)
                MsgHandler msghandler;
                if (m_DicHandler.TryGetValue(msg.GetType(), out msghandler))
                {
                    //object[] param = new object[] { msg, peer };
                    msghandler.Invoke(msg, peer);
                }
                if (msg is Msg_Ping)
                {
                    return;
                }

                // 消息分发到peer
                RoomPeerMgr.Instance.DispatchPeerMsg(peer, msg);
            }
            catch (Exception ex)
            {
                LogSys.Log(LOG_TYPE.ERROR, "Exception {0}\n{1}", ex.Message, ex.StackTrace);
            }
        }