//发送消息到TransferServer, 网关调用 func SendToGameServer(userSession *link.Session, msg []byte) { send_msg := make([]byte, 8+len(msg)) copy(send_msg[:2], msg[:2]) binary.PutUint64LE(send_msg[2:10], userSession.Id()) copy(send_msg[10:], msg[2:]) //C2S消息,发送到GameServer或者LoginServer msgID := binary.GetUint16LE(send_msg[:2]) if gameProto.IsValidLoginID(msgID) { sendGameMsg("LoginServer", send_msg) } else { sendGameMsg("GameServer", send_msg) } }
//处理接收到的消息 func dealReceiveMsgC2S(session *link.Session, msg packet.RAW) { if len(msg) < 2 { return } msgID := binary.GetUint16LE(msg[:2]) if systemProto.IsValidID(msgID) { dealReceiveSystemMsgC2S(session, msg) } else if gameProto.IsValidID(msgID) { if msgID%2 == 1 { //C2S消息,发送到GameServer或者LoginServer if gameProto.IsValidLoginID(msgID) { sendGameMsg("LoginServer", msg) } else { sendGameMsg("GameServer", msg) } } else { //S2C消息,发送到GateServer sendGameMsg("GateServer", msg) } } }