Ну, я сократил свою задачу следующим образом:WebSocket - лучший способ пространства из ответа сервера
У меня есть node.js
сервера отправки ответов на мой WebSocket
клиента (браузер) с интервалом 2 сек. Клиентский код для получения ответа выглядит следующим образом:
socket.onmessage = function (message) {
//display message
}
В большинстве случаев я могу получить ответ не менее 2 секунд на клиенте. Однако иногда из-за плохого сетевого подключения или высокой нагрузки на сервер я могу получить пакет ответов с сервера. Например, вместо одного ответа за 2 секунды я получаю сразу 3 ответа за 6 секунд.
Как я могу справиться с ситуацией на клиенте, чтобы сохранить задержку не менее 2 секунд?
Один из вариантов заключается в том, чтобы ставить в очередь все ответы на клиенте, а затем иметь таймер, который периодически проверяет очередь. Есть ли способ лучше?
Также есть функция onmessage
потокобезопасная? То есть, новый ответ от блоков сервера во время выполнения блока кода?
Клиент обновляет пользовательский интерфейс для каждого ответа от сервера. И важно, чтобы пользователь немного задержался, чтобы увидеть изменения. – Kamil
Я бы рекомендовал использовать такую функцию, как те, которые упомянуты в http://stackoverflow.com/questions/23072815/throttle-javascript-function-calls-but-with-queuing-dont-discard-calls, что позволяет использовать функцию в очереди и ограничено. Однако, если вы используете этот метод, убедитесь, что задержка немного меньше, чем сервер, чтобы он мог догнать –