セッションへの参加 — Windows
を使用して セッションID そして トークン, OpenTok Windows SDK を使用して OpenTok セッションに接続できます。
このトピックには以下のセクションが含まれます:
セッション ID および認証トークンの作成方法については、以下を参照してください。 セッション作成 そして トークン作成.
セッションオブジェクトの初期化
セッションに接続するには、まず Session() コンストラクタに、適切な Windows アプリケーションコンテキスト、OpenTok API キー、および OpenTok セッション ID を引数として渡します:
session = new Session(Context.Instance, API_KEY, SESSION_ID);
を呼び出すことに注意してください。 Session() コンストラクタは 作成する OpenTok セッション。これにより、既存の OpenTok セッションを表す C# の Session オブジェクトが作成されます。OpenTok セッションは、OpenTok のサーバーサイドライブラリを使用して作成します。詳しくは、 OpenTokセッションの作成.
基本的なセッション関連イベントのハンドラを追加したい:
session.Connected += Session_Connected;
session.Disconnected += Session_Disconnected;
session.Error += Session_Error;
session.ConnectionCreated += Session_ConnectionCreated;
session.StreamReceived += Session_StreamReceived;
session.StreamDropped += Session_StreamDropped;
それぞれのコールバック・メソッドを実装したい。例えば、このメソッドは ConnectionCreated イベント(クライアントが OpenTok セッションに接続した際に発生する):
private void Session_Connected(object sender, EventArgs e)
{
Console.WriteLine("Session connected connection id:" + session.Connection.Id);
}
注: Session クラスは System.IDisposable インターフェースを実装しています。必ず Dispose() メソッドを呼び出すことで、オブジェクトが不要になったとき(たとえば、アプリやウィンドウが閉じるとき)にリソースを解放することができます。
セッションへの接続
に電話する。 Session.connect(token) メソッドに、有効な OpenTok トークンを渡します:
session.Connect(TOKEN);
について Session.Connected イベントは、クライアントが OpenTok セッションに接続したときに送信されます。
session.ConnectionCreated += Session_ConnectionCreated;
private void Session_Connected(object sender, EventArgs e)
{
Console.WriteLine("Session connected connection id:" + session.Connection.Id);
}
について Session.Error イベントは、接続エラーが発生したときに送信される:
session.Error += Session_Error;
private void Session_Error(object sender, Session.ErrorEventArgs e)
{
Console.WriteLine("Session error:" + e.ErrorCode);
}
の値の説明については、OpenTok.ErrorCode 列挙型のドキュメントを参照してください。 code プロパティを使用する。
セッションからの切断
セッションを切断するには Session.Disconnect() メソッドを使用する:
session.Disconnect();
切断の検出
について Session.Disconnected クライアントがOpenTokセッションから切断された際に、このメッセージが送信されます。
private void Session_Disconnected(object sender, EventArgs e)
{
Console.WriteLine("Session disconnected");
}
セッションへの接続が、接続成功後に発生したエラーによって切断された場合 Session.Error イベントは Session.Disconnected イベント。に渡しされる ErrorEventArgs オブジェクトは、 Session.Error イベントハンドラは、接続が切断された理由を定義する。
自動再接続
クライアントは、予期せず(たとえば、ネットワーク接続が切断された場合など)セッションから切断された際、自動的に再接続を試みます。クライアントが切断および再接続した際に発生するイベントに対応したい場合を除き、クライアントが自動的に再接続するようにするためのコードを追加する必要はありません。
接続が切断され、クライアントが再接続しようとすると Session.ReconnectionStart イベントが送信される。接続が回復すると Session.ReconnectionSuccess イベントが送信されます。クライアントが接続を復元できない場合、クライアントは OpenTok セッションから切断され、 Session.Disconnected イベントが送信される。
これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる:
session.ReconnectionStart = Session_ReconnectionStart;
session.ReconnectionSuccess = Session_ReconnectionSuccess;
session.Disconnected = Session_Disconnected;
private void Session_ReconnectionStart(object sender, EventArgs e)
{
// Display a user interface notification.
}
private void Session_ReconnectionSuccess(object sender, EventArgs e)
{
// Adjust user interface.
}
private void Session_Disconnected(object sender, EventArgs e)
{
// Adjust user interface.
}
クライアントがセッションから一時的に切断されると、ストリームにサブスクライブしているクライアントのサブスクライバーオブジェクトは、次のように送信します。 Subscriber.StreamDisconnected そして Subscriber.StreamDisconnected イベントは、公開されたストリームがドロップしたときと、自動的に再開されたとき(および再開された場合)に発生します。詳しくは 自動再接続 「ストリームの購読」開発者ガイドの該当セクション。
デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(そして成功したときに)送信されます。このとき Session.SendSignal(type, signal, connection, retryAfterReconnect) メソッドで retryAfterReconnect パラメータを false を使用して、切断中にシグナルがキューに入るのを防ぐことができます。詳しくは 自動再接続中に信号が送信されないようにする.
他のクライアントの接続と切断の検出
セッションに接続しているときは Session.ConnectionCreated このイベントは、新しいクライアント(自身のクライアント以外)がセッションに接続した際に送信されます。イベントリスナーに渡される ConnectionEventArgs オブジェクトは、セッションから切断された接続を定義します:
session.ConnectionCreated += Session_ConnectionCreated;
private void Session_ConnectionCreated(object sender, EventArgs e)
{
// Another client connected to the session.
}
について Session.ConnectionDropped このイベントは、クライアント(自身のクライアントを除く)がセッションから離脱した際に発生します。イベントリスナーに渡される ConnectionEventArgs オブジェクトには、セッションから離脱した接続情報が定義されています。
session.ConnectionCreated += Session_ConnectionDropped;
private void Session_ConnectionDropped(object sender, EventArgs e)
{
// Another client disconnected from the session.
}