Example #1
0
            public static byte[] PacketResponseData(WebMessageData webData)
            {
                using (var stream = new NetworkStream())
                {
                    var data = webData.Data;

                    byte b = 0x80;
                    b = (byte)(b | (byte)webData.OpCode);
                    stream.WriteByte(b);

                    b = 0x80;
                    var len = data.Length;
                    if (len < 126)
                    {
                        b = (byte)(b | len);
                        stream.WriteByte(b);
                    }
                    else if (len < 65536)
                    {
                        b = (byte)(b | 126);
                        stream.WriteByte(b);
                        BigEndianPrimitiveTypeSerializer.Instance.WriteValue(stream, (ushort)len);
                    }
                    else
                    {
                        b = (byte)(b | 127);
                        stream.WriteByte(b);
                        BigEndianPrimitiveTypeSerializer.Instance.WriteValue(stream, (ulong)len);
                    }

                    //写入掩码
                    stream.Write(Mark, 0, 4);

                    for (var index = 0; index < len; index++)
                    {
                        data[index] = (byte)(data[index] ^ Mark[index % 4]);
                    }

                    //写入负载数据
                    stream.Write(data, 0, len);
                    return(stream.ToArray());
                }
            }
Example #2
0
            void Send(WebMessageData message)
            {
                var buffer = WebSocketHandle.PacketResponseData(message);

                SendDataToServer(buffer);
            }