Командный чат и чат поддержки
Сообщения рассылаются на каждый сервер, держащий соединение участника, а поток даёт новичкам предысторию.
Рассылайте сообщения всем подключённым клиентам в реальном времени, с шардированными каналами для кластеров и потоками для истории.
Каждый сервер WebSocket подписывается на комнаты, в которых находятся его подключённые пользователи.
Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.
Чат-комната или живая лента уведомлений должна доходить до каждого подключённого пользователя одновременно, через множество серверов WebSocket. Опрос базы данных слишком медленный и дорогой, а серверам нужен общий способ сообщать друг другу, что что-то произошло.
Каждый сервер WebSocket подписывается на каналы, которые интересуют его пользователей. Когда что-то происходит, один PUBLISH доходит до каждого подписанного сервера, который пересылает его своим пользователям. Шардированные каналы удерживают трафик на узле, которому принадлежит канал в кластере, а поток рядом с каждой комнатой хранит историю для тех, кто присоединится позже.
Каждый сервер WebSocket подписывается на комнаты, в которых находятся его подключённые пользователи.
SUBSCRIBE room:42Её сервер публикует один раз. В ответе указано, сколько подписчиков получили сообщение.
PUBLISH room:42 "{\"from\":\"alice\",\"text\":\"Deploy is green\"}"Сообщение также добавляется в поток комнаты, ограниченный последними 1000 сообщений.
XADD room:42:history MAXLEN ~ 1000 * from alice text "Deploy is green"Он читает последние 50 сообщений из потока, затем переходит на канал в реальном времени.
XREVRANGE room:42:history + - COUNT 50В режиме кластера SPUBLISH оставляет сообщение на узле, которому принадлежит канал.
SPUBLISH room:{42}:typing "alice"Сообщения рассылаются на каждый сервер, держащий соединение участника, а поток даёт новичкам предысторию.
Обновления заказов, упоминания и оповещения отправляются в браузер в момент возникновения.
Положения курсоров и индикаторы набора текста рассылаются по короткоживущим каналам.
Одна публикация доходит до каждого подписчика.
PUBLISHSUBSCRIBEПодпишитесь на room:*, чтобы получать каждую комнату.
PSUBSCRIBEКаналы остаются на узле, которому принадлежат в кластере.
SPUBLISHSSUBSCRIBEСоедините канал с ограниченным потоком для пропущенных пользователями сообщений.
XADDXREVRANGEНет. Pub/sub доставляет тем, кто подписан в данный момент. Используйте поток рядом с каналом, если пользователям нужна история.
Да. Используйте шардированный pub/sub (SPUBLISH, SSUBSCRIBE), чтобы трафик каждого канала оставался на узле, которому он принадлежит.
Да. Уведомления о пространстве ключей публикуют события об изменениях ключей. См. документацию об уведомлениях о пространстве ключей.
HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.