タイムアウト

一般的なエラーの1つは、要求のタイムアウトです。このエラーは、ローカルマシンが設定された時間内にサーバーから応答を受信しなかった場合に発生します。

これの考えられる原因は次の通りです。

  • クライアントとサーバー間の接続性に問題があり、要求または応答のいずれかが伝わりませんでした。

  • サーバーは要求を受信しましたが、何らかの内部的なエラーのため要求を処理できませんでした。

  • サーバーからの応答がありましたが、遅延時間が長すぎたかタイムアウトの値が小さすぎたため、クライアントが拒否しました。

最後の場合は、タイムアウト値を増やすことができます。

この値を変更したくなるもう1つの理由は、ネットワーク接続が失われることが頻繁にあり、これが発生するたびに失敗コールバックの呼び出しまで長時間待ちたくない場合です。この場合は、値を減らすことができます。一般に、タイムアウトの値は大きい値と小さい値のバランスを取る必要があります。

タイムアウトは、特定のアクションごとに個別に設定できます。つまり、全ての呼び出しに共通のデフォルト値を一度に変更するということはできません。

SDKのほとんどの処理ではこれをサポートしています。最後の引数として渡されるRequestConfigを探してください。例えば、StrixNetworkシングルトンのSetRoomMemberメソッドには、次のシグネチャを持つものがあります。

void SetRoomMember(long memberId, RoomMemberProperties memberProperties, RoomMemberSetEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)

config引数がnullの場合、デフォルト値の30秒が使用されます。

RequestConfigクラスにはTimeoutというフィールドがあります。これはミリ秒単位で指定されるため、10秒のタイムアウトが必要な場合は、次のように10000に設定します。

SetRoomMember(
    memberId: 0,
    memberProperties: new RoomMemberProperties { name = "Cliff" },
    handler: null,
    failureHandler: null,
    config: new RequestConfig { Timeout = 10000 }
);