gpt4 book ai didi

google-chrome - WebSocket Chrome 接收数据问题

转载 作者:行者123 更新时间:2023-12-01 23:33:53 26 4
gpt4 key购买 nike

我试着四处寻找一些信息,但找不到任何信息。我使用的是最新版本:21.0.1180.83 m。

我有一个正在使用的 C++ 服务器,在握手后我向 Chrome 发送以下内容:“10000001000000100110100001101001” 哪个应该只是“hi”,对吗?但出于某种原因,chrome 没有做任何事情。我的服务器正在正确发送数据——我正在处理这些位并且有一个 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;
}

最佳答案

看起来你的字节顺序是倒过来的。线路上发出的第一个字节是“01101001”,即:

  • 0 - 延续帧
  • 110 - rsvd 1 和 rsvd 2(但不是 rsvd 3)
  • 1001 - ping 操作码。

看来您有一个小字节序架构,并且正在尝试一次构造具有多个字节的帧/ header ,这就是字节顺序发挥作用的地方。如果您要一次构建一个字节以上的帧,则需要交换值以使用网络字节顺序(即大端)。

引用资料:

关于google-chrome - WebSocket Chrome 接收数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12189363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com