2016-10-19 18 views
2

Я работаю в проекте, который использует SSE aproach, чтобы передавать данные с сервера на браузер каждые 0,5 секунды.Возможно ли, что события, инициированные сервером, перегружают браузер каким-либо образом?

Он захватывает данные из Mysql, преобразует его в JSON и отправляет в браузер.

Мне было интересно в экстремальном сценарии, где браузер будет работать в течение нескольких месяцев (это возможно). Сервер отправляет в браузер 2.764.800 JSON в день. Это будет 82.944.000 толчков в месяц.

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

Есть ли сценарий, который может оправдать обновление страницы каждые X секунд?

ответ

1

Без каких-либо конкретных деталей ответ будет «возможно, но, возможно, нет [необходимости обновления страницы]».

Насколько я знаю, на стороне SSE нет особых ограничений. Таким образом, в типичном примере получения элемента данных с сервера, обновляя значение в div и не сохраняя полученные данные, не должно быть роста памяти. Дважды в секунду тоже хорошо.

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

Мои проблемы были бы везде:

  • Браузер ошибок
  • управления памятью Javascript. (Например, непреднамеренные круговые зависимости, которые сборщик мусора не может обработать.) (This выглядит неплохо для обсуждения на эту тему, а другой here.)
  • Ненадежный интернет - некоторый сервер или маршрутизатор по пути, решающий закрыть сокет, который был открыть долгое время. (SSE должен только авто-переподключение, когда это произойдет, хотя -. Я предпочитаю, чтобы добавить некоторые Keep-Alive сообщений на вершине, как иногда сокеты закрываются не-чисто)

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

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

+0

Привет, Даррен, это приложение для больницы (так, 24 часа 7 дней). Он работает в интрасети. Я использую стек LEMP. Каждые 0,5 с есть запрос к базе данных, которая захватывает информацию и отправляет клиенту через SSE - JSON. База данных получает данные от обычных форм и от устройств IoT. На данный момент он отображает только некоторые поля, которые были изменены в базе данных. Но следующим шагом будет отображение диаграмм в режиме реального времени (например, приложение для торговли). Я помещаю время (часы), которое исходит от php, чтобы показать пользователю, соединение с сервером запущено и данные обновляются. – zwitterion

+0

Если часы останавливаются, это связано с тем, что с подключением что-то не так. И я создаю код для обновления страницы каждые 60 секунд, чтобы быть уверенным в соединении, стабилизироваться и работать нормально. – zwitterion

+0

Не могли бы вы лучше объяснить свой второй пункт - «Управление памятью Javascript». – zwitterion