我已经开始在C ++中编写一个小WebSocket Server
。我正在使用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'构成第一个字节。第二个字节是文本im发送的长度 - 字符串“hello”后跟一个空转义字符。我的调试JavaScript代码是:
ws.onopen = function()
{
alert("WebSocket connection open");
}
ws.onmessage = function(event)
{
alert("Data has been received");
}
在我的服务器发送8个字节之后,我希望来自浏览器的警报说已收到数据,但事实并非如此。我已经测试了chrome和firefox。
有人可以看到我哪里出错吗?