Asopitech With · ボイス・チャットのコミュニティ
Discord オンライン状態 with Alopex Chirps
Discordのオンライン状態は、ボイス・チャットのコミュニティのDiscordで、友だちやメンバーが今オンラインかどうかを見せる機能です。これをAlopex Chirpsを応用して再現すると…?
更新: 2026/10/13
どんなサービスか
Discordでは、ユーザーの名前の横に、オンライン、退席中、取り込み中、オフラインといった状態が出ます。友だちやサーバーのメンバーの状態は、変わるとすぐに相手の画面に反映されます。扱うデータは、ユーザーごとの状態と、その状態を見ている相手です。
通信の組み立て
- ノードのメンバーシップ:ユーザーの接続を受けるサーバーをノードとしてメッシュに入れます。gossipで、どのノードが動いているかを全ノードが知ります。
- 状態の配信:ユーザーの状態が変わったら、そのユーザーを見ている相手がつながるノードへ送ります。宛先が多いときは、全ノードへの配信を使います。古くなってもかまわない状態の通知は、一時的な配信方式で送ります。
- ノードの離脱:ノードが止まると、離脱のイベントが届きます。そのノードにつながっていたユーザーを、まとめてオフラインにできます。
どのユーザーがどのノードにつながっているか、誰が誰の状態を見ているかは、アプリが持ちます。
配置の形
接続を受けるサーバーの各ノードにChirpsを組み込みます。ノードを足すときは、シードのリストから参加させるだけで、ほかのノードに伝わります。
Alopex Chirpsが合う理由
オンライン状態の配信は、ノードどうしの素早い通知と、ノードが止まったことの検知でできています。Chirpsは、送信と全体への配信と、gossipによる故障検知を、同じライブラリで持ちます。
ノードどうしの配信と故障の検知を同じライブラリで扱えるAlopex Chirpsで、オンライン状態の配信を作ってみよう。GitHubのクイックスタートから始められます。