func (this Handle) DealMsg(session *link.Session, msg []byte) { msgID := binary.GetUint16LE(msg[:2]) var protoMsg protos.ProtoMsg if systemProto.IsValidID(msgID) || logProto.IsValidID(msgID) || gameProto.IsValidID(msgID) { protoMsg = protos.UnmarshalProtoMsg(msg) } else if dbProto.IsValidID(msgID) { protoMsg = dbProto.UnmarshalProtoMsg(msg) } if protoMsg == protos.NullProtoMsg { ERR("收到Proto未处理消息:", msgID) return } if f, exists := this[msgID]; exists { f(session, protoMsg) } else { ERR("收到Handle未处理消息:", msgID) } }
//处理接收到的消息 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) } } }