コード例 #1
0
        private static void Static_PacketResponseDataStream(NetworkStream writer, WebMessageData data)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

#if ADDMSGID
            //消息组包协议(我们规定消息总长度是消息编号1位+数组长度)
            var dataLen = data.Data.Length + 1;
#else
            var dataLen = data.Data.Length;
#endif

            if (dataLen == 0)
            {
                return;
            }
            byte b = 0x80;

            b = (byte)(b | ((byte)data.OpCode & 0xF));
            //写入opcode
            writer.WriteByte(b);

            if (dataLen <= 125)
            {
                writer.WriteByte((byte)(dataLen & 0x7F));
            }
            else if (dataLen < ushort.MaxValue)
            {
                writer.WriteByte(126 & 0x7F);
                BigEndianPrimitiveTypeSerializer.Instance.WriteValue(writer, (ushort)dataLen);
            }
            else
            {
                writer.WriteByte(127 & 0x7F);
                BigEndianPrimitiveTypeSerializer.Instance.WriteValue(writer, (uint)dataLen);
            }
#if ADDMSGID
            //写入消息编号
            writer.WriteByte(data.MessageId);
            //写入消息数据
            writer.Write(data.Data, 0, dataLen - 1);
#else
//写入消息数据
            writer.Write(data.Data, 0, dataLen);
#endif
        }
コード例 #2
0
        static byte[] Static_PacketResponseData(WebMessageData data)
        {
            //消息组包协议
            var dataLen = data.Data.Length;

            switch (data.OpCode)
            {
            case WebSocketOpcode.Text:
            case WebSocketOpcode.Binary:
                if (dataLen == 0)
                {
                    return(new byte[0]);
                }
                break;
            }

            using (var stream = new NetworkStream())
            {
                Static_PacketResponseDataStream(stream, data);
                return(stream.ToArray());
            }
        }
コード例 #3
0
ファイル: WebSocket_Handle.cs プロジェクト: shenrui93/saker
        public void SendData(WebMessageData msg)
        {
            var send_data = PacketResponseData(msg);

            this.webSocketSession?.SendDataToClient(send_data);
        }
コード例 #4
0
 protected override byte[] PacketResponseData(WebMessageData data)
 {
     return(Static_PacketResponseData(data));
 }
コード例 #5
0
ファイル: WebSocket_Handle.cs プロジェクト: shenrui93/saker
 protected virtual byte[] PacketResponseData(WebMessageData webMessageData)
 {
     return(new byte[0]);
 }