Team-Chat und Support-Chat
Nachrichten verteilen sich an jeden Server, der die Verbindung eines Mitglieds hält, und der Stream liefert Neuankömmlingen den Rückstand.
Verteilen Sie Nachrichten in Echtzeit an jeden verbundenen Client, mit geshardeten Kanälen für Cluster und Streams für den Verlauf.
Jeder WebSocket-Server abonniert die Räume, in denen seine verbundenen Benutzer sind.
Ein animierter Durchlauf mit echten HotKV-Befehlen und Beispielantworten. Klicken Sie auf einen Schritt, um direkt dorthin zu springen. Befehle und Antworten bleiben auf Englisch, genau so, wie Sie sie in HotKV eingeben und sehen.
Ein Chatraum oder ein Live-Benachrichtigungsfeed muss jeden verbundenen Benutzer gleichzeitig erreichen, über viele WebSocket-Server hinweg. Eine Datenbank abzufragen ist zu langsam und zu teuer, und die Server brauchen einen gemeinsamen Weg, einander mitzuteilen, dass etwas passiert ist.
Jeder WebSocket-Server abonniert die Kanäle, die seine Benutzer interessieren. Wenn etwas passiert, erreicht ein einziges PUBLISH jeden abonnierten Server, der es an seine Benutzer weiterleitet. Geshardete Kanäle halten den Traffic in einem Cluster auf dem Knoten, dem der Kanal gehört, und ein Stream neben jedem Raum bewahrt den Verlauf für Benutzer, die später dazukommen.
Jeder WebSocket-Server abonniert die Räume, in denen seine verbundenen Benutzer sind.
SUBSCRIBE room:42Ihr Server veröffentlicht einmal. Die Antwort gibt an, wie viele Abonnenten sie erhalten haben.
PUBLISH room:42 "{\"from\":\"alice\",\"text\":\"Deploy is green\"}"Die Nachricht wird außerdem an den Stream des Raums angehängt, begrenzt auf die letzten 1000 Nachrichten.
XADD room:42:history MAXLEN ~ 1000 * from alice text "Deploy is green"Er liest die letzten 50 Nachrichten aus dem Stream und geht dann live auf den Kanal.
XREVRANGE room:42:history + - COUNT 50Im Cluster-Modus hält SPUBLISH die Nachricht auf dem Knoten, dem der Kanal gehört.
SPUBLISH room:{42}:typing "alice"Nachrichten verteilen sich an jeden Server, der die Verbindung eines Mitglieds hält, und der Stream liefert Neuankömmlingen den Rückstand.
Bestellupdates, Erwähnungen und Warnungen werden in dem Moment an den Browser gepusht, in dem sie passieren.
Cursorpositionen und Tippindikatoren werden auf kurzlebigen Kanälen gesendet.
Ein Publish erreicht jeden Abonnenten.
PUBLISHSUBSCRIBEAbonnieren Sie room:*, um jeden Raum zu empfangen.
PSUBSCRIBEKanäle bleiben in einem Cluster auf dem Knoten, dem sie gehören.
SPUBLISHSSUBSCRIBEKoppeln Sie einen Kanal mit einem begrenzten Stream für Nachrichten, die Benutzer verpasst haben.
XADDXREVRANGENein. Pub/Sub stellt an alle zu, die in diesem Moment abonniert haben. Verwenden Sie einen Stream neben dem Kanal, wenn Benutzer einen Verlauf brauchen.
Ja. Verwenden Sie geshardetes Pub/Sub (SPUBLISH, SSUBSCRIBE), damit der Traffic jedes Kanals auf dem Knoten bleibt, dem er gehört.
Ja. Keyspace Notifications veröffentlichen Ereignisse für Key-Änderungen. Siehe die Dokumentation zu Keyspace Notifications.
HotKV spricht das Redis-Protokoll, sodass Sie einen bestehenden Client darauf richten und genau diese Befehle ausführen können.