ドキュメント

サポート

Relay

Relay

持続的接続

Prevent connection timeouts by regularly sending messages to the Relay server.
読み終わるまでの所要時間 1 分最終更新 1ヶ月前

Relay サーバーは、一定時間アクティビティがないクライアントを自動的に 切断 します。Relay がクライアントを切断するまでのデフォルトの生存時間 (TTL、time to live) は、10 秒 です。ホスト単独の場合の切断までの TTL は、60 秒 (
BIND
メッセージの後かつ
CONNECT
メッセージとともにピアがそれらに接続される前) です。このクライアントに関連して Relay サーバーが受信した (送信者または受信者としての) メッセージがある場合、この タイムアウト はリセットされます。
メッセージの頻度が低いゲームの場合は、定期的に呼び出すメソッドで接続を維持することが重要です。たとえば、
Update()
ループ内で呼び出すなどです。NGO を使用した Relay を使用している場合は、ネットワークマネージャー (
NetworkManager
) によって接続が自動的に維持されます。ただし、これは
StartClient
または
StartHost
を正常に呼び出した後にのみ行われます。
UTP を使用した Relay を使用している場合は、ホストと参加プレイヤーの両方の
NetworkDriver
への定期的な更新がスケジュールされていれば、UTP によって接続が自動的に維持されます。通常、これは新しい接続を受け入れたり、メッセージを受信したりするために行います。以下のコードサンプルは、接続を維持するためのコードを示しています。
//Call the below regularly, e.g., in Monobehaviour.Update()void Example_KeepingConnectionAlive(){ // Update the NetworkDrivers regularly to ensure the host/player is kept online. if (HostDriver.IsCreated && isRelayServerConnected) { HostDriver.ScheduleUpdate().Complete(); //Accept incoming client connections while (HostDriver.Accept() != default(NetworkConnection)) { Debug.Log("Accepted an incoming connection."); } } if (PlayerDriver.IsCreated && clientConnection.IsCreated) { PlayerDriver.ScheduleUpdate().Complete(); //Resolve event queue NetworkEvent.Type eventType; while ((eventType = clientConnection.PopEvent(PlayerDriver, out _)) != NetworkEvent.Type.Empty) { if (eventType == NetworkEvent.Type.Connect) { Debug.Log("Client connected to the server"); } else if (eventType == NetworkEvent.Type.Disconnect) { Debug.Log("Client got disconnected from server"); clientConnection = default(NetworkConnection); } } }}