我试图寻找一些信息,但找不到任何信息。我使用的是最新版本:21.0.1180.83 m。
我有一个正在处理的C ++服务器,握手后我发送Chrome以下内容:“10000001000000100110100001101001”哪个应该只是“嗨”,对吗?但由于某种原因,铬没有做任何事情。我的服务器正在正确地发送数据 - 我正在弄乱这些位并且有一个chrome错误说:一个或多个保留位打开:reserved2 = 1,reserved3 = 1.所以,我知道chrome正确接收。< / p>
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert(received_msg);
};
据我所知,这应该是正确的,除非我遗漏了某些东西......任何帮助都会受到赞赏。
编辑我解决了我的问题,好像我没有正确地把字节放在一起......
这是一段代码,我拼凑起来修复......(不要讨厌)
string construct_data ( string data ) {
string return_value = "";
/* 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/64) |
|N|V|V|V| |S| | (if payload len==126/127) |
| |1|2|3| |K| | |
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
| Extended payload length continued, if payload len == 127 |
+ - - - - - - - - - - - - - - - +-------------------------------+
| |Masking-key, if MASK set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data |
+-------------------------------- - - - - - - - - - - - - - - - +
: Payload Data continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Payload Data continued ... |
+---------------------------------------------------------------+*/
char unmasked = 129;
char size;
if ( data.size() <= 125 ) {
size = data.size();
} else if ( data.size() > 125 && data.size() <= 65535) {
size = 126;
} else if ( data.size() > 65535 ) {
size = 127;
}
stringstream it_um;
stringstream it_s;
for ( int i = 0; i < 1 ; i++ )
it_um << unmasked;
for ( int i = 0; i < 1; i++ )
it_s << size;
std::string raw_unmask;
std::string raw_size;
raw_unmask = it_um.str();
raw_size = it_s.str();
string raw_data = raw_unmask + raw_size + data;
return_value.append(raw_data);
return return_value;
}
答案 0 :(得分:4)
看起来您的字节顺序是倒退的。线路上的第一个字节是“01101001”,即:
看起来你有一个小端架构,并试图一次构造多个字节的帧/头,这是字节序发挥作用的地方。如果要一次构造多个字节的帧,则需要交换值以使用网络字节顺序(即大端)。
参考文献:
答案 1 :(得分:0)
这个&#34;问题&#34;如果握手后出现任何无框架数据,则可以在Chrome中显示,然后是框架数据。我只是想分享一下,因为我刚刚调试了几个小时的确切问题。我开始实现的是在标题后面的CRLF \ CRLF之后添加接受字符串。希望它可以帮助别人:)