Подойдет ли SSE или оставить WebSocket?

Доброго времени суток.
Есть внутрисетевое web-приложение, в данный момент оно функционирует следующим образом - серверная часть написана на node.js с использованием express и socket.io. Для отправки каких либо изменений с клиента на сервер используются обычные post-запросы и после внесения изменений сервер делает рассылку данных изменений при помощи комнат socket.io определенному списку пользователей.
Сейчас хотим переписать данный сервис используя Koa.js и http2, и хочется понять может ли SSE в нашем случае заменить вебсокеты или нет? Из материалов в интернете это не совсем ясно. Конкретно, я не нашел информации можно ли сделать что-то типа подписок на каналы или рассылки другим подключенным пользователям...
  • Вопрос задан
  • 321 просмотр
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Ткнуть в доку лучше готового к копипасте ответа
И SSE и WS - протоколы поверх http, оба могут работать поверх http/2 и иметь мультиплексирование
Но есть между ними и различия:
WS обеспечивает двухстороннюю связь, после установления рукопожатия любая сторона может слать сообщения, протокол бинарный, все сообщения кодируются в бинарные message-frame, что требует доп библиотек на стороне сервера (на браузере такая идет в стандартном апи), зато позволяет передавать как бинарные так и текстовые данные
SSE - односторонняя связь, только от сервера к клиенту, клиент может передать данные только в url при открытии соеденения, дальше вещает только сервер, протокол текстовый, если есть бинарные данные их придется обернуть в base64 (например), с точки зрения сервера - это обычный GET запрос, который сервер не закрывает, а просто шлет данные в http body в особом формате, делая периодически flush соединения (в идеале после каждого сообщения)

Все остальное, вроде комнат и т.д. - надстройки библиотек и не более
В случае koa - по дефолту он завершает запрос когда зарезолвится промис из последнего middleware, для SSE придется это обходить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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