1

WebSocketnode.jsでサーバーを構築しています。クライアントが接続したら、すぐにメッセージを送信したいと思います。

ただし、ハンドシェイクが完了した直後に送信すると、Chromeでエラーが発生します。

Status line contains embedded null

ハンドシェイクの100ミリ秒後にaを使用しsetTimeoutてメッセージを送信すると機能しますが、この手法を使用して10ミリ秒を使用すると機能しません。

ハンドシェイクとメッセージは、それらの間の時間間隔が短い場合に一緒に送信されると追加されるように見えます(ただし、Chromeで生のトラフィックを表示する方法がわからないため、わかりませんWebSocket-誰かが好きならそれも聞くために)。

サーバーが100ミリ秒待機するのは望ましくありません。これは、サーバーがクライアントにとって確かに目立つためです。さらに、サーバーは優れたソリューションというよりは、汚いトリックのように見えます。

ハンドシェイクの直後にメッセージを送信するにはどうすればよいですか?

4

1 に答える 1

5

すでに整理しました。接続があったときに送信していましたが、もちろんハンドシェイクが送信される前です。だから私はやっていた:

client connected
send message
receive handshake request
send handshake response
...

connectハンドシェイクが送信されたとき、つまりWebSocket接続が実際に確立されたときにライブラリのイベントを発生させて、コードを変更しました。

補足として、chrome:// net-internals /はWebSocket接続をデバッグするときに非常に役立つページです(要求/応答ハンドシェイクを簡単に確認できます)。私は以前にそれを知っていたはずです...

于 2011-07-04T12:24:29.213 に答える