public override void OnMessage(USocket us, ByteBuf bb) { if (onMessage != null) { onMessage(); } int len = bb.ReadShort(); if (bb.ReadableBytes() != len) { Log.Error("数据长度不对!"); return; } MessageID msgId = (MessageID)bb.ReadShort(); byte[] data = bb.ReadBytes(len - 2); IMessage msgData = MessageMap.GetMessageData(msgId, data); if (msgData == null) { return; } //Messenger.BroadcastAsync<IMessage>(msgId.ToString(), msgData); Messenger.BroadcastAsync(msgId.ToString(), (object)msgData); }
public void Send(MessageID msgId, IMessage msg) { if (MessageMap.GetMsgType(msgId) != msg.GetType()) { Log.Error("消息号和数据不匹配!"); return; } byte[] data = msg.ToByteArray(); Frame frame = new Frame(data.Length + 4); frame.PutShort((short)(data.Length + 2)); //写入数据长度 frame.PutShort((short)msgId); //写入协议号 frame.PutBytes(data); //写入数据 socket.Send(frame); }