прошу помочь мне в понятии, как устроены чаты в messengerах на Websocket.
Я встречал многие статьи по написаю backend для чата. Но все они описывают какой-то общий чат.
Т.е между клиентом и сервером устанавливается websocket соединение, когда пользователь отправляет сообщение, сервер его принимает и рассылает его всем другим пользователем.
Т.е все пишут в общий чат, и все читают в этом чате.
Но как устроены именно чаты, например из 3 человек, или личные сообщения (это же тоже чат, просто из 2 человек).
Рассмотрим, например чат из 3 человек: 1. Человек A, отправил сообщение в наш чат (например в /messages), сервер принял, и ему нужно отправить это 2 другим.
Куда он отправит, в такое же соединение каждого из пользователей с сервером, которые слушают /messages? но ведь /messages слушают все пользователи (не только этого чата). Как это устроено?
Или это будет не /messages, а chat, и все 3 человека слушают именно /chat?id=1002. Но тогда я не понимаю, как это устроено. Например, пользователь создал чат с этими 2 людьми, но как они узнают об этом, они же не подписаны еще на /chat?id=1002.
Заранее спасибо
Т.е при авторизации пользователь сначала должен подписаться на главный / (канал), сервер понял, что пользователь в сети. Теперь пользователь еще подписывается на все чаты? например на /chat?id=1, chat?id=2, и т.д?
– danilshik Mar 28 '20 at 23:36Просто я хочу с websocket до этого не работал, захотел понять, написав небольшой messenger, но не знаю как устроен backend под websocket, чтобы его написать.
Как я понял, теперь мне нужно держать на сервере список авторизованных клиентов
– danilshik Mar 28 '20 at 23:43