@kirill-93

На сколько ресурсоемко использовать сокеты вместо ajax?

У нас сайт SPA и мы довольно часто релизим обновления. Из-за особенностей SPA , пользователи не получают обновлений, пока намеренно не обновят страницу. Есть и такие, кто по несколько дней не обновляет и пишет в поддержку, что о новой фиче написали, а у него ее нет.
Решили выводить сообщение, что есть изменения и нужно перезагрузить страницу.
Тут два варианта: слать запрос Аяксом каждую минуту, например. Или устанавливать для всех пользователей сокет соединение.
Соединение конечно лучше, там сообщение пользователь получит мгновенно, но как дела обстоят с нагрузкой? Сколько такие пустые соединения будут расходовать ресурсов и стоит ли их использовать вместо ajax?
  • Вопрос задан
  • 757 просмотров
Решения вопроса 1
@deliro
Это решается не тем способом, который ты хочешь. Сокеты для этого держать — извращение.

Добавь в бэкенд глобальный заголовок, типа "X-Build: 2019-11-07T12:06:40", который будет означать дату сборки бэкенда (придётся при выкатке фронта выкатывать и бэк в одно время). Дату сборки получаешь или из последнего коммита гита (кстати, можно хоть даже хэш коммита вместо даты), или прямо при сборке образа класть файлик с текущей датой. При первом запросе в стейте SPA устанавливаешь дату сборки, все последующие любые запросы в бэк смотришь, не изменился ли заголовок. Если изменился — вот тебе изменения, которые должны повлечь релоад страницы, показывай попапы.

Таким образом, мы не шлём ничего лишнего и не держим бесполезных сокетов.

Но в этом случае, логично, что если не заботиться об обратной совместимости (кстати, теперь ты можешь запросить у API данные нужной версии [конечно же, этот механизм нужно реализовать], т.к. на руках уже есть заголовок даты сборки), то пользователь может получать ошибки. Если нужно избежать этого — можешь поставить слушатель фокуса вкладки браузера и отправлять какой-то запрос-пустышку, только чтобы добыть этот заголовок.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
65 тысяч портов на одном IP
Я попутал стандартные сокеты с ws.
При работе с вебсокетами, после хендшекинга возвращается дескриптор на поток.
Их тоже не бесконечное количество, но 500К доступных вполне можно расчитывать.
Ответ написан
В текущем проекте шлём Ajax, не на API, а к статическому файлу `manifest.json`, где дополнительно указываем параметры, номер сборки, включен ли режим обслуживания и т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы