Что это даёт вам
- Сообщения и реакции сразу появляются на телефоне собеседника и на других ваших устройствах.
- Телефон, который был не в сети, догружает всё, когда возвращается, без пропусков.
Как это работает
Каждое приложение держит одно авторизованное WebSocket-соединение с сервером. Когда вы отправляете сообщение, сервер сначала записывает его в базу данных и только потом публикует событие. Рядом работают несколько серверных процессов, они передают события друг другу через общий канал публикации и подписки, поэтому сообщение доставит тот процесс, к которому подключён получатель.
Если получатель не в сети, push-уведомление будит его телефон, а приложение при подключении догружает пропущенное из журнала повтора. В чате со сквозным шифрованием через всё это идёт зашифрованный конверт, который сервер прочитать не может.
Под капотом
WebSocket · Node.js · TypeScript · PostgreSQL · Redis
Частые вопросы
Что будет, если отправить сообщение без связи?
Приложение отправит его, когда связь вернётся. Как только сообщение дошло до сервера, оно сохраняется раньше, чем кого-то уведомят.
Сколько сервер хранит зашифрованное сообщение?
Пока его копию не получит каждый телефон собеседника, но не дольше 30 дней.