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); }
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); } }
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; }
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); } }