для нотификаций на клиент (новое сообщение, сообщение прочитано и т.п.) об изменениях на сервере, а для отправки сообщений, прочитывания со своей стороны (то, что изменяет данные на сервере) REST или для этих действий тоже WS? В чем плюс, в чем минус того и того? Спасибо.
в теории HTTP 2 и 3 поддерживает двунаправленный стриминг данных
ага, прочитал, на практике браузеры обратный стриминг (из браузера на сервер) не поддерживают, нужно будет делать отдельный запрос на сервер для каждого нового сообщения.
Есть оч простая штука - деплои. Представим себе мега примитивный кейс. Мол вот у нас есть сервер который держит коннекты юзеров обрабатывает сообщения на вход и на выход и тип все в одном. И например ты выкатываешь новую версию. В этом случае тебе надо как-то предусмотреть как избежать большого количества реконнектов одновременно. Решаемо но сложно. Можно вставить проксю которая будет держать коннекты и транслировать это все в сообщения другим штукам. Так вроде слэк делал что бы пыху всякое отправлять. Есть готовые такие вот websocket reverse proxy. Так редеплой не ломает коннекты и прокси эти куда реже меняются и их проще скейлить Есть ещё нюансы подтверждения доставки. Она точно нужна для отправки с клиента и не всегда нужна для получения (мол можно держать историю сообщений и пусть клиент курсор держит). Есть ещё нюансы что SSE в силу того что он однонаправленный типа должен лучше мобилкам батарейку держать но там есть куча ограничений (тип не больше 6-ти коннектов на клиент или чет такое, только UTF-8 и только текстовые данные) Словом схема http на запись и ws/sse/long poling на обновления тупо хорошо ложится на возможность взять готовой инфраструктуры и склеить как тебе надо
Обсуждают сегодня