/// <summary> /// 处理由gate转发的client消息 /// </summary> /// <param name="packet"></param> private void HandleProxyClientMsg(PacketBase packet) { ProxyC2SMsg proxy_msg = packet as ProxyC2SMsg; //转发的消息id ushort header = proxy_msg.data.ReadUShort(); if (header < ProtocolID.MSG_BASE_C2SS || header >= ProtocolID.MSG_BASE_C2SS + ProtocolID.MSG_APPLAYER_PER_INTERVAL) { Log.Debug("收到错误的消息ID:" + header); return; } PacketBase msg = PacketPools.Get(header); msg.Read(proxy_msg.data); //处理 ushort msg_id = (ushort)(header - ProtocolID.MSG_BASE_C2SS); MsgProcFunction fun = m_client_msg_proc[msg_id]; if (fun == null) { Log.Debug("未注册消息处理函数ID:" + header); } else { fun(msg); } PacketPools.Recover(msg); }
/// <summary> /// 处理由gate转发到fs的消息 /// </summary> private void HandleProxyMsgToFS(ClientSession session, ushort header, ByteArray data) { if (session.fs_uid == 0) { Log.Debug("已经与fs断开连接"); return; } if (session.session_status != eSessionStatus.IN_GAMING && session.session_status != eSessionStatus.ALREADY_LOGIN) { Log.Debug("session状态错误:" + session.session_status); return; } ProxyC2SMsg msg = PacketPools.Get(gs2fs.msg.PROXY_CLIENT_MSG) as ProxyC2SMsg; msg.Set(session.client_uid, header, data); ForServerNetManager.Instance.Send(session.fs_uid, msg); }