room_broadcast

room_broadcast サンプル

概要

room_broadcast サンプルは Diarkis サーバーの Room と P2P 機能を使用したサンプル・プログラムです。2人のユーザーが同じ Room に接続し、Room 経由のリレー通信を行った後、P2P 接続を行い P2P でも通信を行う内容となっています。 room_broadcast サンプルでは以下の機能を確認することができます。

  • Room の作成

  • Room への参加

  • Room メンバーへのメッセージ送信

  • P2P の開始

  • P2P でのメッセージの送受信

ローカル環境でサーバーを起動する

サンプルで使用するサーバーを起動するためのチュートリアルを実施して、ローカル環境で Diarkis サーバーを起動します。

1. Diarkis サーバーをローカル環境で起動する

サンプルの引数

サンプルの起動時には以下の3つのパラメータを指定してください。

引数
説明

serverAddr

Diarkis サーバのエンドポイントを指定してください

UID

接続するユーザーの ID を任意の文字列で指定してください

clientKey

クライアントキーを任意の文字列で指定してください

起動例:

room_broadcast.exe 192.168.1.123:7000 1111 AAAA

room_broadcast サンプル解説

  1. Diarkis ランタイムおよび Diarkis Module を初期化し、Diarkis サーバーへ接続します。 詳細については Diarkis モジュール利用の全体的な流れ を参照してください。

  2. 各機能の初期化処理を行います。 本サンプルでは Room モジュールと P2P モジュールを使用するため、Diarkis Module でそれらの機能を初期化します。

  3. Room の RandomJoin で Room に入室します。 DiarkisRoomBase::RandomJoinRoom() は参加可能な Room がすでに存在すればその Room に参加し、存在しなければ新たに Room を作成します。また、DiarkisRoomBase::RandomJoinRoom() でサーバーへリクエストを送信後、実際に Room に参加が完了するまで DiarkisRoomBase::IsJoin() を使用して状態をチェックします。

  4. Room に想定されている人数が参加するまで待機します。 本サンプルでは 2 ユーザーが同じ Room に参加するまで待機しています。 DiarkisRoomBase::SendGetMemberIDs() を呼び出すと Room に参加しているメンバーのリストの取得をサーバーにリクエストすることが可能です。結果は DiarkisRoomBase::GetRoomMembers() で取得することができます。

  5. Room の Broadcast で Room に参加しているユーザー全員にメッセージを送信します。

  6. Room のオーナーは DiarkisRoomBase::SendStartP2PSync() を実行してサーバーへ P2P 接続の開始を通知し、Room に参加しているメンバーの接続先のアドレス・リストを取得します。

  7. Room のオーナーが DiarkisRoomBase::SendStartP2PSync() を実行すると Room に参加しているユーザー全員に DiarkisRoomBase::OnStartP2PSync() で P2P 接続情報が通知され、これをトリガーにホールパンチを開始します。

  8. ホールパンチに成功したら、P2P で通信します。

  9. DiarkisRoomBase::SendLeaveRoom() を実行して Room から退室をサーバーへリクエストします。 本サンプルでは DiarkisRoomBase::IsLeave() を使用して Room から Leave が完了するまで待機しています。

  10. 終了処理 詳細については Diarkis モジュール利用の全体的な流れ を参照してください。

注意点

  • P2P のホールパンチを成功させるためには、P2P するクライアントが同じ Room に入っている状態でアドレスを交換して実施しています。

  • 複数のクライアントをご用意頂き、同時に実行して動作を確認してください。

最終更新

役に立ちましたか?