Ответы пользователя по тегу Server-Sent Events
  • Подойдет ли SSE или оставить WebSocket?

    bingo347
    @bingo347 Куратор тега Node.js
    Ткнуть в доку лучше готового к копипасте ответа
    И SSE и WS - протоколы поверх http, оба могут работать поверх http/2 и иметь мультиплексирование
    Но есть между ними и различия:
    WS обеспечивает двухстороннюю связь, после установления рукопожатия любая сторона может слать сообщения, протокол бинарный, все сообщения кодируются в бинарные message-frame, что требует доп библиотек на стороне сервера (на браузере такая идет в стандартном апи), зато позволяет передавать как бинарные так и текстовые данные
    SSE - односторонняя связь, только от сервера к клиенту, клиент может передать данные только в url при открытии соеденения, дальше вещает только сервер, протокол текстовый, если есть бинарные данные их придется обернуть в base64 (например), с точки зрения сервера - это обычный GET запрос, который сервер не закрывает, а просто шлет данные в http body в особом формате, делая периодически flush соединения (в идеале после каждого сообщения)

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