我已经在我现有的服务器中实现了一个 websocket 服务器。握手很好,然后我什至可以发送第一条消息,客户端浏览器接收它。但是任何后续消息都会断开 websocket。在 chrome 上我收到以下错误。
failed: A server must not mask any frames that it sends to the client.
我的框架是这样创建的
Len = erlang:size(Msg),
if
Len < 126 ->
Message = [<<1:1, 0:3,2:4,0:1,Len:7>>,Msg];
Len < 65536 ->
Message = [<<1:1, 0:3,2:4,0:1,126:7,Len:16>>,Msg];
true ->
Message = [<<1:1, 0:3,2:4,0:1,127:7,Len:64>>,Msg]
end,
现在,一个要传输的示例数据看起来<< 130,46,60,115,110,112,112,112,105,1110,102,111,111,32,97,118,112,112,112,1161,116,1161,1161,349,49,49,49,49,11111111111111111111111111111111111111111111111111111111111111111111110,11111111111111111111111111111111111卡46,50,48,34,32,47,62>>
正如您在上面的代码中看到的那样,我的掩码位始终设置为 0,但我不明白为什么相同的消息第一次起作用然后我再次发送相同的消息,它抱怨掩码位设置。
有人知道为什么吗?谢谢