Подтвердить что ты не робот

Являются ли Websockets адаптированы к очень долгоживущим соединениям?

Я думаю об использовании веб-сокетов с Netty для приложения, где клиенты сначала подключаются к серверу, чтобы получить некоторую информацию. Затем они регистрируются сервером, и любые изменения в информации конкретного клиента инициируют уведомление клиенту, содержащему обновленную информацию. В этом случае связь сначала инициируется клиентом, а последняя инициируется сервером. Итак, веб-сокеты, похоже, адаптированы для этой ситуации.

Но после его завершения я хочу, чтобы мой клиент мог быть уведомлен сервером в любое время. Это может произойти через один день после недели. Итак, мой вопрос заключается в очень долговечных связях с использованием веб-сокетов?

Спасибо

4b9b3361

Ответ 1

Абсолютно, но есть пара предостережений.

Если вы хотите, чтобы ваше соединение постоянно жило непрерывно в течение длительного времени, я бы предложил добавить к вашему клиенту некоторую логику, чтобы повторно подключиться, когда произойдет событие onclose (вам нужно какое-то отключение, чтобы предотвратить жесткую петлю повторного подключения для определенных ситуации).

Вы также можете отправить сообщение ping (простое сообщение, которое игнорируется) каждые 5 минут или около того, чтобы предотвратить тайм-ауты в режиме ожидания (что может произойти в нескольких местах по сетевому соединению). Сетевые стеки TCP часто устанавливаются так, чтобы убивать соединения, которые простаивали в течение 2 часов, а сообщения ping будут поддерживать их. Браузеру разрешено выполнять пинговые сообщения, невидимые для приложения, но это необязательно, поэтому вы должны реализовать свои собственные на уровне приложений, если вы хотите гарантировать это поведение.

Примечание: Ping/Pong frames являются частью спецификации WebSocket, но пока недоступны через API

Ответ 2

Долгоживущие соединения - это то, для чего был разработан WebSocket. В зависимости от того, как ваши клиенты подключаются, эти соединения, тем не менее, могут быть ограничены в течение жизни, то есть в розничных подключениях DSL, часто происходит принудительное повторное подключение каждые 24 часа.

Тогда то, что вам кажется желательным, похоже на публикацию и подписку на шаблон обмена сообщениями поверх исходного WebSocket (который обеспечивает только двунаправленную передачу сообщений). Посмотрите на: http://wamp.wshttp://autobahn.ws).

Отказ от ответственности: Я являюсь оригинальным автором WAMP и Autobahn и работаю в Tavendo.