websocket的通信握手没有问题,但是发送数据的时候需要有一个压缩,我试着将代码写成 如下压缩:
/// <summary>
/// 往关联的客户端发送数据
/// </summary>
public void Send(string message, Socket Client)
{
DataFrame dr = new DataFrame(message);
var buffer = dr.GetBytes();
NetworkStream stream = new NetworkStream(Client);
buffer = Compress(stream, buffer);
_workSocket.Send(buffer);
}
/// <summary>
/// 压缩
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public byte[] Compress(NetworkStream input, byte[] nbyte)
{
using (var compressor = new DeflateStream(input, CompressionMode.Compress,true))
{
int offset = 0;
int count = nbyte.Length;
compressor.Write(nbyte, offset, count);
compressor.Close();
return nbyte;
}
}
谷歌浏览器 报错WebSocket connection to 'ws://192.168.1.179:8050/' failed: A server must not mask any frames that it sends to the client.
------解决思路----------------------
所以你需要压缩的其实是message,而不是DataFrame
------解决思路----------------------
你可以先把字符串转换成字节数组,然后压缩,然后按Base64编码成字符串,放到DataFrame里,发送
接收到之后,再按Base64转成byte数组,然后解压,然后转回字符串
------解决思路----------------------
websocket基本的协议,应该是不支持压缩的。
------解决思路----------------------

你只能压缩你自己的数据包部份。其他的不能压