Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }