asopi tech
asopi techIndie Developer

Asopitech With · ボイス・チャットのコミュニティ

Discord オンライン状態 with Alopex Chirps

Discordのオンライン状態は、ボイス・チャットのコミュニティのDiscordで、友だちやメンバーが今オンラインかどうかを見せる機能です。これをAlopex Chirpsを応用して再現すると…?

更新: 2026/10/13

どんなサービスか

Discordでは、ユーザーの名前の横に、オンライン、退席中、取り込み中、オフラインといった状態が出ます。友だちやサーバーのメンバーの状態は、変わるとすぐに相手の画面に反映されます。扱うデータは、ユーザーごとの状態と、その状態を見ている相手です。

通信の組み立て

  • ノードのメンバーシップ:ユーザーの接続を受けるサーバーをノードとしてメッシュに入れます。gossipで、どのノードが動いているかを全ノードが知ります。
  • 状態の配信:ユーザーの状態が変わったら、そのユーザーを見ている相手がつながるノードへ送ります。宛先が多いときは、全ノードへの配信を使います。古くなってもかまわない状態の通知は、一時的な配信方式で送ります。
  • ノードの離脱:ノードが止まると、離脱のイベントが届きます。そのノードにつながっていたユーザーを、まとめてオフラインにできます。

どのユーザーがどのノードにつながっているか、誰が誰の状態を見ているかは、アプリが持ちます。

配置の形

接続を受けるサーバーの各ノードにChirpsを組み込みます。ノードを足すときは、シードのリストから参加させるだけで、ほかのノードに伝わります。

Alopex Chirpsが合う理由

オンライン状態の配信は、ノードどうしの素早い通知と、ノードが止まったことの検知でできています。Chirpsは、送信と全体への配信と、gossipによる故障検知を、同じライブラリで持ちます。

ノードどうしの配信と故障の検知を同じライブラリで扱えるAlopex Chirpsで、オンライン状態の配信を作ってみよう。GitHubのクイックスタートから始められます。

関連リンク