我已经开始用WebSocket Server
C++ 编写一个小程序。我正在使用Ubuntu
. 服务器侦听传入的连接。建立连接后,浏览器会向服务器发送一个 WebSocket 标头,包括Sec-WebSocket-Key
带有的标头SHA-1
,然后与标头的其余部分base64 encoded
一样将其发送回浏览器。Sec-WebSocket-Accept
这会导致浏览器和我的服务器之间打开 WebSocket 连接。
我已阅读有关数据框架的规范部分,并正在尝试将数据从我的服务器发送到浏览器。下面是我的代码:
cout << "sending data..." << endl;
uint8_t to_send[8];
to_send[0] = (uint8_t)129; // 10000001
to_send[1] = (uint8_t)6; // 00000110
to_send[2] = 'h';
to_send[3] = 'e';
to_send[4] = 'l';
to_send[5] = 'l';
to_send[6] = 'o';
to_send[7] = '\0'; // 00000000
int bytesSent = send(i, &to_send, 8, 0);
cout << "bytes sent: " << bytesSent << endl;
'fin' 位、三个保留位和文本帧的操作码 '0001' 构成第一个字节。第二个字节是我发送的文本的长度——字符串“hello”后跟一个空转义字符。我用于调试的 JavaScript 代码是:
ws.onopen = function()
{
alert("WebSocket connection open");
}
ws.onmessage = function(event)
{
alert("Data has been received");
}
在我的服务器发送 8 个字节后,我希望浏览器会发出警报,说已收到数据,但事实并非如此。我已经在 chrome 和 firefox 上进行了测试。
任何人都可以看到我要去哪里错了吗?