0

次のようなシナリオでロング ポーリング クライアントをサポートするための適切なソリューションはありますか。

sockets.in("room1").volatile.emit(message);
sockets.in("room2").volatile.emit(message);

クライアントは両方の部屋にいて、一方の部屋でのみメッセージを受信します。長いポーリングに関係していると思います。後者のエミットから「揮発性」を削除すると、機能しますが、別の方法はありますか?

副次的な質問: VOLATILE を使用しないことによる副作用はありますか? サーバーが例外をスローするなどのように、多少のオーバーヘッドが伴うと想像できます。また、サーバーは何回再送信しますか?

よろしく、 マティアス

4

1 に答える 1

0

実際には volatile の方が不安定です。最後のデータが送信された後にポーリングがサーバーに到達していない場合、ポーリングは終了しています。volatile を使用する必要はありません。使用しない場合は、接続がまだ到達していない場合にすべての発行をキューに入れ、到達すると順番に実行されます。私の経験から、volatile を使用する利点は見当たりません。

揮発性に関する Socket.io の最初のページからのテキスト: 「特定のメッセージが削除されることがあります。キーワード bieber のリアルタイムのツイートを表示するアプリがあるとします。

特定のクライアントがメッセージを受信する準備ができていない場合 (ネットワークの遅さやその他の問題、または長いポーリングで接続されており、要求と応答のサイクルの途中にあるため)、関連するすべてのツイートを受信して​​いない場合あなたのアプリケーションが苦しむことはありません。

その場合、これらのメッセージを揮発性メッセージとして送信することをお勧めします。」

于 2013-01-18T16:04:47.677 に答える