あなたにとっての意味
- メッセージやリアクションが、相手の端末とあなたのほかの端末にすぐ表示されます。
- オフラインだった端末も、つながったときに抜けなく追いつきます。
しくみ
各アプリはサーバーと認証済みの WebSocket 接続を 1 本開いています。メッセージを送ると、サーバーはまずデータベースに書き込み、そのあとでイベントを発行します。複数のサーバープロセスが並行して動き、共通のパブリッシュ/サブスクライブのチャネルでイベントを受け渡すので、受信者の接続を持つプロセスが配信します。
受信者がオフラインなら、プッシュ通知が端末を起こし、再接続したアプリがリプレイログから追いつきます。エンドツーエンド暗号化されたチャットでは、この経路を通るのはサーバーが読めない暗号化された封筒です。
使っている技術
WebSocket · Node.js · TypeScript · PostgreSQL · Redis
よくある質問
接続がないときにメッセージを送るとどうなりますか?
接続が戻るとアプリが送信します。サーバーが受け取ったら、誰かに通知する前にまず保存します。
サーバーは暗号化されたメッセージをどれくらい保持しますか?
受信者のすべての端末がコピーを受け取るまで、最長 30 日です。