我试图找寻一些信息,但找不到任何。我正在使用最新版本:21.0.1180.83米。WebSocket Chrome接收数据问题
我有一个C++服务器我工作,握手后,我发送Chrome以下内容:“10000001000000100110100001101001”这应该只是“嗨”,是否正确?但由于某些原因,Chrome并没有做任何事情。我的服务器正在正确发送数据 - 我在乱搞这些位,并有一个错误消息说:一个或多个保留位打开:reserved2 = 1,reserved3 = 1.所以,我知道chrome接收正确。
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;
}
在发送消息后,是否发生onerror或onclose回调?你能发布你的消息发送代码吗?握手代码也可能是有用的(以防在握手结束时有额外的数据被Chrome解释为消息的开始)。使用wireshark检查您是否真的发送了您期望的数据,这可能也很有趣。 – simonc
@simonc不能,一切都很好。生病检查电线鲨鱼。我很确定它与kanaka建议的一样。 – User
@Ohmages:你能告诉我你的解决方案吗?你是如何解决它的?我也面临类似的问题。任何帮助将不胜感激。 –