2

WebSocket は正確にはどのように機能しますか? それらを実装するのは奇妙に思えました。

最初にアドレスを使用してオブジェクトonopen構築し、次に接続が開かれたときに呼び出されるようなコールバックを定義します。Websocket の構築中に接続するように指示した場合、これはどのように発生しますか? onopenコンストラクターが非同期で接続する場合、myが呼び出されることが保証されますか。

要約すると:

1) すべてのコールバックを宣言すると、websocket はいつ接続を決定しますか?

2)send()メソッドは非同期ですか? もしそうなら、それを同期と呼ぶ方法はありますか?

編集:send()非同期であることがわかりましたbufferedAmount。送信するためにバッファリングされたデータの量を返す属性があります。ただし、2 番目の質問の 2 番目の部分は依然として有効です。

4

1 に答える 1

2

イベントループのこの部分がどのように機能するかを説明する良い方法を見つけました:

イベント ループでは、コードを除いてすべてが非同期で実行されます。

連続するステートメントは、次のイベント ループの反復が発生する前に常に実行されます。wsこれは、現在の反復が完了する前にイベント リスナーを呼び出すことができないことがわかっているため、イベント リスナーをオブジェクトに安全に割り当てることができることを意味します。

送信に関しては、正しくお気づきのように、これらの値は通常バッファリングされます。onopenただし、まだ開いていない接続でメッセージをバッファリングしているため、イベントが発生する前にメッセージを送信することはおそらく悪い考えです。

これがあなたの質問に答えることを願っています。

于 2012-08-13T21:59:01.220 に答える