をするための最良の方法うーん、私は次のように私の問題を低減していますのWebSocket - スペースアウトサーバの応答
私は2秒の間隔で、私のWebSocket
クライアント(ブラウザ)への応答を送信するnode.js
サーバーを持っています。応答を受け取るクライアントコードは次のとおりです。
socket.onmessage = function (message) {
//display message
}
ほとんどの場合、クライアントで少なくとも2秒間応答を受け取ることができます。しかし、ネットワークの接続不良やサーバーの負荷が高いことが原因で、サーバーからの応答が激しくなることがあります。たとえば、2秒間に1回の応答ではなく、6秒間に3回の応答を同時に取得します。
少なくとも2秒の遅延が保存されるように、どのように私は、クライアントの状況を扱うことができますか?
1つのオプションは、クライアントのすべての応答をキューに入れ、その後、定期的にキューをチェックタイマーを持つことです。より良い方法がありますか?
また、関数はonmessage
スレッドセーフですか?つまり、コードブロックの実行中にサーバーからの新しい応答がブロックされますか?
クライアントは、サーバーからの応答ごとにUIを更新します。また、ユーザーが変更を確認するために少し時間がかかることが重要です。 – Kamil
機能の使用を許可するhttp://stackoverflow.com/questions/23072815/throttle-javascript-function-calls-but-with-queuing-dont-discard-callsに記載されているような機能の使用をお勧めしますキューに入れられ、レート制限されます。ただし、この方法を使用する場合は、遅れをサーバーよりもわずかに小さくして、それに追いつくことができるようにしてください –