チームチャットとサポートチャット
メッセージはメンバーの接続を持つすべてのサーバーに配信され、ストリームが新しく参加した人に過去のメッセージを提供します。
接続中のすべてのクライアントにメッセージをリアルタイムで配信します。クラスター向けのシャード化チャンネルと、履歴のためのストリームに対応しています。
各WebSocketサーバーは、接続中のユーザーがいるルームを購読します。
実際のHotKVコマンドと応答例を使ったアニメーションのウォークスルーです。任意のステップをクリックすると、そこに移動します。 コマンドと応答は、HotKVで実際に入力し表示されるとおり英語のままです。
チャットルームやライブ通知のフィードは、多数のWebSocketサーバーをまたいで、接続中のすべてのユーザーに同時に届かなければなりません。データベースのポーリングは遅すぎて高価すぎますし、サーバー同士が何かが起きたことを互いに伝える共通の手段も必要です。
各WebSocketサーバーは、自分のユーザーが関心を持つチャンネルを購読します。何かが起きると、1回のPUBLISHが購読中のすべてのサーバーに届き、各サーバーがそれを自分のユーザーに転送します。シャード化チャンネルはクラスター内でチャンネルを所有するノードにトラフィックをとどめ、各ルームの隣に置いたストリームが後から参加するユーザーのために履歴を保持します。
各WebSocketサーバーは、接続中のユーザーがいるルームを購読します。
SUBSCRIBE room:42Aliceのサーバーが一度だけ発行します。応答は、それを受け取った購読者の数です。
PUBLISH room:42 "{\"from\":\"alice\",\"text\":\"Deploy is green\"}"メッセージはルームのストリームにも追記され、直近1000件に制限されます。
XADD room:42:history MAXLEN ~ 1000 * from alice text "Deploy is green"Bobはストリームから直近50件のメッセージを読み、その後チャンネルでライブ受信を始めます。
XREVRANGE room:42:history + - COUNT 50クラスターモードでは、SPUBLISHがメッセージをチャンネルを所有するノードにとどめます。
SPUBLISH room:{42}:typing "alice"メッセージはメンバーの接続を持つすべてのサーバーに配信され、ストリームが新しく参加した人に過去のメッセージを提供します。
注文の更新、メンション、アラートは、発生した瞬間にブラウザーにプッシュされます。
カーソルの位置や入力中の表示は、短命なチャンネルでブロードキャストされます。
1回の発行がすべての購読者に届きます。
PUBLISHSUBSCRIBEroom:*を購読すれば、すべてのルームを受信できます。
PSUBSCRIBEクラスター内では、チャンネルはそれを所有するノードにとどまります。
SPUBLISHSSUBSCRIBEチャンネルを上限付きのストリームと組み合わせ、ユーザーが見逃したメッセージを保持します。
XADDXREVRANGEいいえ。Pub/Subは、その時点で購読している相手に配信します。ユーザーが履歴を必要とする場合は、チャンネルの隣にストリームを置いてください。
はい。シャード化Pub/Sub(SPUBLISH、SSUBSCRIBE)を使えば、各チャンネルのトラフィックはそれを所有するノードにとどまります。
はい。キースペース通知がキーの変更イベントを発行します。キースペース通知のドキュメントをご覧ください。
HotKVはRedisプロトコルに対応しているため、既存のクライアントを向けるだけで、これらと同じコマンドを実行できます。