1

WebSocket Server私はC++で小さなものを書き始めました。を使用してUbuntuいます。サーバーは着信接続をリッスンします。接続が確立されると、ブラウザーはサーバーに WebSocket ヘッダーを送信します。これには、 でハッシュされた が含まれSec-WebSocket-Keyており、残りのヘッダーと同様にブラウザーに送り返されます。これにより、ブラウザーとサーバー間の WebSocket 接続が開かれます。SHA-1base64 encodedSec-WebSocket-Accept

データ フレーミングに関する仕様の一部を読み、サーバーからブラウザにデータを送信しようとしています。以下は私のコードです:

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」ビット、3 つの予約済みビット、およびテキスト フレームのオペコード「0001」が最初のバイトを構成します。2 番目のバイトは、送信するテキストの長さです。文字列「hello」の後にヌル エスケープ文字が続きます。デバッグ用の私の JavaScript コードは次のとおりです。

ws.onopen = function()
{
    alert("WebSocket connection open");
}

ws.onmessage = function(event)
{
    alert("Data has been received");
}

サーバーが 8 バイトを送信した後、ブラウザからデータが受信されたことを示すアラートが表示されると思いますが、そうではありません。クロムとファイアフォックスでテストしました。

誰かが私が間違っているところを見ることができますか?

4

0 に答える 0