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()); } }
void Send(WebMessageData message) { var buffer = WebSocketHandle.PacketResponseData(message); SendDataToServer(buffer); }