1

我已经开始用WebSocket ServerC++ 编写一个小程序。我正在使用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 上进行了测试。

任何人都可以看到我要去哪里错了吗?

4

0 回答 0