room_broadcast
最終更新
役に立ちましたか?
最終更新
役に立ちましたか?
room_broadcast サンプルは Diarkis サーバーの Room と P2P 機能を使用したサンプル・プログラムです。2人のユーザーが同じ Room に接続し、Room 経由のリレー通信を行った後、P2P 接続を行い P2P でも通信を行う内容となっています。 room_broadcast サンプルでは以下の機能を確認することができます。
Room の作成
Room への参加
Room メンバーへのメッセージ送信
P2P の開始
P2P でのメッセージの送受信
サンプルで使用するサーバーを起動するためのチュートリアルを実施して、ローカル環境で Diarkis サーバーを起動します。
Diarkis ランタイムおよび Diarkis Module を初期化し、Diarkis サーバーへ接続します。 詳細については を参照してください。
各機能の初期化処理を行います。 本サンプルでは Room モジュールと P2P モジュールを使用するため、Diarkis Module でそれらの機能を初期化します。
Room の RandomJoin で Room に入室します。 DiarkisRoomBase::RandomJoinRoom()
は参加可能な Room がすでに存在すればその Room に参加し、存在しなければ新たに Room を作成します。また、DiarkisRoomBase::RandomJoinRoom()
でサーバーへリクエストを送信後、実際に Room に参加が完了するまで DiarkisRoomBase::IsJoin()
を使用して状態をチェックします。
Room に想定されている人数が参加するまで待機します。
本サンプルでは 2 ユーザーが同じ Room に参加するまで待機しています。 DiarkisRoomBase::SendGetMemberIDs()
を呼び出すと Room に参加しているメンバーのリストの取得をサーバーにリクエストすることが可能です。結果は DiarkisRoomBase::GetRoomMembers()
で取得することができます。
Room の Broadcast で Room に参加しているユーザー全員にメッセージを送信します。
Room のオーナーは DiarkisRoomBase::SendStartP2PSync()
を実行してサーバーへ P2P 接続の開始を通知し、Room に参加しているメンバーの接続先のアドレス・リストを取得します。
Room のオーナーが DiarkisRoomBase::SendStartP2PSync()
を実行すると Room に参加しているユーザー全員に DiarkisRoomBase::OnStartP2PSync()
で P2P 接続情報が通知され、これをトリガーにホールパンチを開始します。
ホールパンチに成功したら、P2P で通信します。
DiarkisRoomBase::SendLeaveRoom()
を実行して Room から退室をサーバーへリクエストします。 本サンプルでは DiarkisRoomBase::IsLeave()
を使用して Room から Leave が完了するまで待機しています。
終了処理 詳細については を参照してください。
P2P のホールパンチを成功させるためには、P2P するクライアントが同じ Room に入っている状態でアドレスを交換して実施しています。
複数のクライアントをご用意頂き、同時に実行して動作を確認してください。