Веб-сокеты, SSE или HTTP при автоматическом обновлении постоянно открытой страницы панели инструментов - PullRequest
0 голосов
/ 18 сентября 2018

Мое приложение построено на Angular (2+) и NodeJS.Одна из страниц - это, по сути, информационная панель, отображающая текущие задачи компании, где эта панель отображается весь день по телевизору для сотрудников компании.

  • Редко обновляется или перезагружается вручную.
  • Задачи обновляются сотрудником с другого компьютера каждые 5-10 минут.
  • Задачи на панели мониторинга должны обновляться как можно скорее после обновления любой задачи.
  • Приложение должноограничить передачу данных при обновлении панели мониторинга после обновления задачи.

Сначала я пробовал веб-сокеты, но у меня была проблема с надежностью соединения, поскольку иногда плата никогда не обновлялась, потому что веб-розетка теряла соединение.Я никогда не мог понять эту проблему и прочитать, что веб-сокеты могут быть ненадежными.

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

Я только недавно слышал о SSE, но ничего не знаю об этом.

В данный момент мой следующий план заключается в настройкепроверка состояния «последнее обновление», при которой я продолжаю выполнять http-вызов каждые 15 секунд, передавая время «последнего обновления» из внешнего интерфейса и сравнивая его с временем «последнего обновления» бэкэндов (которое обновляется при каждом изменении задачи), и тольковозврат данных, если время внешнего интерфейса устарело, для уменьшения скорости передачи данных.

Звучит ли это как хорошая идея, или я должен снова попробовать веб-сокеты, или SSE?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Если вам нужно передать только данные с сервера на клиент, возможно, стоит взглянуть на события, отправленные сервером.

Вы можете взглянуть на эту статью (https://streamdata.io/blog/push-sse-vs-websockets/) и это видео (https://www.youtube.com/watch?v=NDDp7BiSad4)), чтобы получить представление об этой технологии и о том, может ли она соответствовать вашим потребностям. Они суммируют плюсы и минусы обоих SSE и WebSockets.

0 голосов
/ 18 сентября 2018

Сначала я попробовал веб-сокеты, но у меня была проблема с надежностью соединения, так как иногда плата никогда не обновлялась, потому что веб-розетка теряла соединение.

Обработайте событие, когда соединениепотерял и переподключил его.

Я бы никогда не смог разобраться в этой проблеме и прочитать, что веб-сокеты могут быть ненадежными.

Не позволяйте случайной чепухе, которую вы читаете в Интернетеудержать вас от владения проблемой и выяснения ее.Веб-сокеты надежны, как и все остальное.И, как и все остальное, они могут отключиться.И, как и многие новые API, они оставляют вам логику повторного подключения ... разработчику приложений.Если вы просто не хотите иметь с этим дело, в NPM есть много пакетов для автоматического переподключения веб-сокетов, которые в точности соответствуют предложенному мной.Они обрабатывают события для отключения и немедленно повторно подключаются.

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

Это может быть, да.

Я только недавно слышал о SSE, но ничего не знаю об этом.

Из того, что мы мало знаем о вашей проблеме, SSE звучит как правильный путь.SSE лучше всего подходит для:

  • Evented data
  • Данные, которые можно каким-либо образом сериализовать в текст (JSON - это хорошо, но не используйте base64 для кодирования больших двоичных потоков, поскольку вы их создадите)слишком большой)
  • Однонаправленные сообщения от сервера к клиенту

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...