room_broadcast
room_broadcast サンプル
概要
room_broadcast サンプルは Diarkis サーバーの Room と P2P 機能を使用したサンプル・プログラムです。2人のユーザーが同じ Room に接続し、Room 経由のリレー通信を行った後、P2P 接続を行い P2P でも通信を行う内容となっています。 room_broadcast サンプルでは以下の機能を確認することができます。
Room の作成
Room への参加
Room メンバーへのメッセージ送信
P2P の開始
P2P でのメッセージの送受信
ローカル環境でサーバーを起動する
サンプルで使用するサーバーを起動するためのチュートリアルを実施して、ローカル環境で Diarkis サーバーを起動します。
room_broadcast サンプル解説
Diarkis ランタイムおよび Diarkis Module を初期化し、Diarkis サーバーへ接続します。 詳細については 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 が完了するまで待機しています。終了処理 詳細については Diarkis モジュール利用の全体的な流れ を参照してください。
注意点
P2P のホールパンチを成功させるためには、P2P するクライアントが同じ Room に入っている状態でアドレスを交換して実施しています。
複数のクライアントをご用意頂き、同時に実行して動作を確認してください。
最終更新