接続の受け入れと拒否
Photon Boltでは、クライアントがシーンの読み込みを開始する前に、完全な接続が行われる前の早い段階で、着信接続を許可したり拒否したりすることができます。
通常は、ボルト設定に移動してAccept Mode
をManual
に変更しない限り、すべての接続が自動的に受け入れられます(下図を参照)。
使用例としては、サーバーが満杯のために着信接続を拒否することが挙げられます。
クライアントは接続時にサーバーにトークンを送ることができます(例:パスワードで保護されたゲームセッションに入力、サードパーティのセッションチケットなど)。
このトークンは、 ConnectionRequest
(下記参照)に渡され、さらに、 Connected
などのコールバックから利用可能な BoltConnection
( ConnectToken
)のメンバーとし、ハンドシェイクで渡されます。
クライアントでは、BoltNetwork.Connect
または BoltMatchmaking.JoinSession
のいずれかのバージョンを使って、リクエストを送信して、サーバーへの接続を試みることができます。
C#
public static void BoltMatchmaking.JoinSession(string sessionID, IProtocolToken token);
public static void BoltMatchmaking.JoinSession(UdpSession session, IProtocolToken token);
public static void BoltMatchmaking.JoinRandomSession(IProtocolToken token);
public static void BoltMatchmaking.JoinRandomSession(UdpSessionFilter sessionFilter, IProtocolToken token);
public static void BoltNetwork.Connect(UdpEndPoint endpoint, IProtocolToken token);
public static void BoltNetwork.Connect(UdpEndPoint endpoint);
これらのメソッドのいずれかを呼び出した後、次のコールバックは、このピアがサーバに接続しようとしていることを通知します。
C#
public virtual void GlobalEventListenerBase.ConnectAttempt(UdpEndPoint endpoint, IProtocolToken token);
サーバー上では、新しいプレイヤーが接続しようとすると、以下のようなリクエストが表示されます。
C#
public virtual void GlobalEventListenerBase.ConnectRequest(UdpEndPoint endpoint, IProtocolToken token);
クライアントはサーバに接続しようとするときにトークンを渡すことができます。
このトークンはサーバ上の ConnectionRequest
と Connected
の両方に使われます。
Accept Mode が Manual
の場合は、以下のいずれかを呼び出す必要があります。
C#
public static void BoltNetwork.Accept(UdpEndPoint endpoint);
public static void BoltNetwork.Accept(UdpEndPoint endpoint, IProtocolToken acceptToken);
または
C#
public static void BoltNetwork.Refuse(UdpEndPoint endpoint);
public static void BoltNetwork.Refuse(UdpEndPoint endpoint, IProtocolToken refuseToken);
これらのメソッドでは、必要に応じてトークンを返すことができます。クライアントへの応答に使用します。例えば、これを使用して、エラーメッセージの結果をテキストに変換してユーザーに表示することができます。
接続が許可された場合、クライアントは以下のコールバックを受け取ります。
C#
public virtual void GlobalEventListenerBase.Connected(BoltConnection connection);
接続を拒否された場合はこちらを利用できます。
C#
public virtual void GlobalEventListenerBase.ConnectRefused(UdpEndPoint endpoint, IProtocolToken token);
クライアントは Connected
コールバック内の BoltConnection.AcceptToken
で Accept Token
を取得できます。
以下のシーケンス図は、全体のプロセスをまとめたものです。