セッションへの参加

このガイドでは、アプリケーションをビデオセッションに接続する方法を学びます。

前提条件

有効なVonage Video APIアカウントが必要です。お持ちでない場合は、以下をご利用ください。 無料体験を申し込む.

また、次のことも確認しておく必要がある。 セッションの作成 そして トークンが生成された 関係するすべてのユーザーのために。

セッションオブジェクトの初期化

セッションに接続する前に、セッション・オブジェクトをインスタンス化する必要があります。 クライアントSDKが利用可能.

セッション・オブジェクトをインスタンス化するには OT.initSession() メソッドに、アプリケーションIDと適切なセッションIDを入力してください:

// Replace with your application ID and session ID:
var session = OT.initSession(applicationId, sessionId);

について OT.initSession() メソッドはSessionオブジェクトを返す。

を呼び出すことに注意してください。 OT.initSession() メソッドは 作成する 既存のセッションを表すJavaScript Sessionオブジェクトを作成します。サーバーサイドSDKを使用してセッションを作成できます。参照 セッションの作成.

ユーザーのブラウザーがWebRTCをサポートしていない場合、次のような呼び出しが行われる。 OT.initSession() の結果、ページがユーザーにメッセージを表示します。WebRTC のサポートをチェックし、このメッセージが表示されないようにするには OT.checkSystemRequirements() メソッドを呼び出す前に OT.initSession():

if (OT.checkSystemRequirements() == 1) {
  var session = OT.initSession(applicationId, sessionId);
} else {
  // The client does not support WebRTC.
  // You can display your own message.
}

を呼び出してSession.Builderオブジェクトをインスタンス化します。 Session.Builder() コンストラクタに、適切な Android アプリケーション・コンテキスト、Vonage Video アプリケーション ID、セッション ID を渡します。次に build() メソッドを使ってセッションオブジェクトを作成します:

mSession = new Session.Builder(context, APPLICATION_ID, SESSION_ID)
    .build();

を呼び出すことに注意してください。 Session.Builder.build() メソッドは 作成する 既存の Vonage Video セッションを表す Java Session オブジェクトを作成します。Vonage Video サーバ側ライブラリを使用して Vonage Video セッションを作成します。以下を参照してください。 Vonageビデオセッションの作成.

基本的なセッション関連イベントのリスナー・オブジェクトを追加するには setSessionListener(Session.SessionListener listener) メソッドを呼び出します:

mSession.setSessionListener(this);

イベント・リスナー・オブジェクトとして指定したオブジェクトに、Session.SessionListener インタフェースのメソッドを実装します。これらのメソッドは、セッション関連のイベントが発生したときに呼び出されます。

を呼び出してOTSessionオブジェクトをインスタンス化する。 OTSession init(apiKey:sessionId:delegate:) メソッドに、アプリケーションIDと適切なセッションIDを入力してください:

// Replace kApplicationId with your application ID:
// Replace kSessionId with a session ID:
session = OTSession(apiKey: kApplicationId, sessionId: kSessionId, delegate: self)

を呼び出すことに注意してください。 OTSession init(apiKey: sessionId: delegate:) メソッドは 作成する 既存の Vonage Video セッションを表す Swift OTSession オブジェクトを作成します。Vonage Video サーバーサイドライブラリを使用して、Vonage Video セッションを作成します。

参照 Vonageビデオセッションの作成.

のメソッドを実装する。 OTSessionDelegate プロトコルをデリゲート・オブジェクトとして指定する。これらのメソッドは、セッション関連のイベントが発生したときに呼び出されます。

セッションに接続する前に、OTSessionオブジェクトをインスタンス化してください。 [OTSession initWithApiKey: sessionId: delegate:] メソッドに、アプリケーションIDと適切なセッションIDを入力してください:

// Replace kApplicationId with your application ID":
// Replace kSessionId with an OpenTok session ID:
session = [[OTSession alloc] initWithApiKey:kApplicationId
                                        sessionId:kSessionId
                                        delegate:self];

を呼び出すことに注意してください。 [OTSession initWithApiKey:sessionId:delegate:] メソッドは 作成する 既存の Vonage Video セッションを表す Objective-C OTSession オブジェクトを作成します。Vonage Video セッションは、Vonage Video サーバ側ライブラリを使用して作成します。参照 Vonageビデオセッションの作成.

デリゲート・オブジェクトとして指定したオブジェクトに、OTSessionDelegateプロトコルのメソッドを実装する。これらのメソッドは、セッション関連のイベントが発生したときに呼び出されます。

セッション・オブジェクトをインスタンス化するには Session() コンストラクタに、適切な Windows アプリケーション・コンテキスト、アプリケーション ID、および Vonage Video セッション ID を渡します:

session = new Session(Context.Instance, APPLICATION_ID, SESSION_ID);

を呼び出すことに注意してください。 Session() コンストラクタは 作成する 既存の Vonage Video セッションを表す C# Session オブジェクトを作成します。Vonage Video セッションは、Vonage Video サーバ側ライブラリを使用して作成します。参照 Vonageビデオセッションの作成.

基本的なセッション関連イベントのハンドラを追加したい:

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 イベント(クライアントが Vonage Video セッションに接続したときに発生します:)

private void Session_Connected(object sender, EventArgs e)
{
    Console.WriteLine("Session connected connection id:" + session.Connection.Id);
}

注: Session クラスは System.IDisposable インターフェースを実装しています。必ず Dispose() メソッドを呼び出すことで、オブジェクトが不要になったとき(たとえば、アプリやウィンドウが閉じるとき)にリソースを解放することができます。

型の構造体を作成する。 otc_session_callbacksおよびコールバック関数のメンバへの関数ポインタ。例えば

char *session_user_data = strdup("Session user data");

static void on_session_connected(otc_session *session, void *user_data) {
    // You could publish a stream once you connect to the session.
}
    
static void on_session_stream_received(otc_session *session,
                                       void *user_data,
                                       const otc_stream *stream) {
    // You could call otc_subscriber_new() to subscribe to this stream
       // in response to this event.
}

static void on_session_stream_dropped(otc_session *session,
                                      void *user_data,
                                      const otc_stream *stream) {
    // If you have subscribed to this stream, you should
    // call otc_subscriber_delete() to delete the subscriber in response to this event.
    }
    
static void on_disconnected(otc_session *session, void *user_data) {
    // Handle the on_disconnected event.
}

static void on_session_error(otc_session *session,
                             void *user_data,
                             const char *error_string,
                             enum otc_session_error_code error) {
    // Handle the error.
}

struct otc_session_callbacks session_callbacks = {0};
session_callbacks.user_data = session_user_data;
session_callbacks.on_connected = on_session_connected;
session_callbacks.on_stream_received = on_session_stream_received;
session_callbacks.on_stream_dropped = on_session_stream_dropped;
session_callbacks.on_disconnected = on_session_disconnected;
session_callbacks.on_error = on_session_error;

を使用する。 user_data のメンバーである。 otc_session_callbacks 構造体に、コールバック関数で参照したいデータを設定する。この例では、文字列オブジェクトへのポインタを設定している。しかし、意味のある情報を含む他の型のインスタンスへのポインタにすることもできます。

他のメンバー otc_session_callbacks 構造体は、Vonage Video セッションに関連するイベントが発生したときに呼び出されるコールバック関数です。前の例には、以下のコールバックが含まれています:

  • on_connected\ -- のときに呼び出される。 otc_session_connect() 関数(下記参照)がインスタンスを Vonage Video セッションに接続することに成功しました。
  • on_stream_received -- Vonage Videoセッションに新しいストリームがあるときに呼び出される(他のクライアントがセッションにストリームを公開したとき)。
  • on_stream_dropped -- 他のクライアントのストリームがVonage Videoセッションから切断されたときに呼び出されます。これは、クライアントがストリームの公開を停止した場合や、クライアントのネットワーク接続が切断された場合に発生します。
  • on_disconnected -- アプリケーションが Vonage Video セッションから切断するときに呼び出されます(下記参照)。
  • on_error -- セッションへの接続でエラーが発生したときに呼び出される。この関数には、エラー文字列とエラーコードのパラメータが含まれます。 otc_session_error_code を列挙する。

すべてのコールバックは、アプリケーションやメインスレッド上ではなく、内部スレッド上で行われる。アプリケーションは、内部スレッドのブロックを避けるために、できるだけ早くコールバックを返すべきである。

参照 otc_session_callbacks 各コールバック関数の詳細については、Vonage Video Linux SDK リファレンスを参照してください。

初期化後 otc_session_callbacks 構造体を呼び出す。 otc_session_new() 関数に、アプリケーション ID 文字列、Vonage Video セッション ID 文字列、および otc_session_callbacks 構造になっている:

otc_session *session = NULL;
session = otc_session_new(APPLICATION_ID, SESSION_ID, &session_callbacks);

について otc_session_new() 関数は otc_session 構造体で、Vonage Video セッションを表します。

高度なセッション設定を使用するには otc_session_new_with_settings()の代わりに otc_session_new() 関数を使用します。この関数は settings パラメータへのポインタである。 otc_session_settings 構造体は、高度な設定を定義する。例えば、以下のコードでは otc\_session_settings_new () 関数を使用して otc_session_settings 構造体を呼び出し otc_session_settings_set_connection_events_suppressed(OTC_TRUE) を使用してSDKに接続イベントを抑制させ、大規模なインタラクティブ・ビデオ・セッションをサポートします。そして otc_session_settings 構造体を otc_session_new_with_settings() 関数である:

// Populate the session_callbacks struct, as in the previous example. Then...

otc_session_settings *session_settings = otc_session_settings_new();
otc_session_settings_set_connection_events_suppressed(session_settings, OTC_TRUE);
otc_session *session = otc_session_new_with_settings(APPLICATION_ID,
                                                     SESSION_ID,
                                                     &session_callbacks,
                                                     session_settings);

加えて otc_session_settings_set_connection_events_suppressed()以下の機能により、セッションの詳細設定を行うことができます:

セッションへの接続

セッションIDを取得し、それを使ってセッションオブジェクトを初期化したら、次のステップはセッションに接続することです。

ご希望のプラットフォーム/言語を選択し、以下のセッションに接続する方法をご覧ください:

OTSession コンポーネントを追加すると、自動的に Vonage Video API セッションに接続します。

<OTSession
  applicationId="your-application-ID"
  sessionId="your-session-id"
  token="your-session-token"
>
  <OTPublisher/>
  <OTSubscriber/>
</OTSession>

交換 your-application-ID, your-session-idそして your-session-token あなたの APIキー, a セッションIDそして トークン セッションのために。

を追加することに注意してください。 OTPublisher そして OTSubscriber のコンポーネントと子供たちである。 OTSession コンポーネントを使用している。

を渡すことができます。 error そして sessionConnected イベントハンドラ OTSession コンポーネントを呼び出します。エラーイベントハンドラは、クライアントがセッションへの接続に失敗した場合に呼び出される。また sessionConnected イベントハンドラは、クライアントがセッションに接続したときに呼び出される:

<OTSession
  applicationId="your-application-ID"
  sessionId="your-session-id"
  token="your-session-token"
  eventHandlers={{
    error: event => {
        console.log('error', event);
      },
    sessionConnected: event => {
      console.log('session connected', event);
    },
  }}
>
  <OTPublisher style={{ width: 100, height: 100 }}/>
  <OTSubscriber style={{ width: 100, height: 100 }} />
</OTSession>

に電話する。 connect() メソッドにトークンと完了ハンドラ関数を渡す:

var session = OT.initSession(appID, sessionId);
session.connect(token, function(error) {
  if (error) {
    console.log("Error connecting: ", error.name, error.message);
  } else {
    console.log("Connected to the session.");
  }
});

の完了ハンドラーにエラー・オブジェクトが渡される。 connect イベントに渡される。そうでなければ、エラーオブジェクトは渡されず、クライアントがセッションに正常に接続したことを示す。

Session オブジェクトは sessionConnected イベントをディスパッチします。そして、OTオブジェクトは exception イベントを使っている。しかし、接続の成功をチェックするには、完了ハンドラーを connect() メソッドの最後のパラメータとして指定する。

に電話する。 Session.connect(token) メソッドに有効なトークンを渡す:

mSession.connect(TOKEN);

について Session.SessionListener.onConnected(Session session) メソッドは、クライアントが Vonage Video セッションに接続するときに呼び出されます。

@Override
protected void onConnected(Session session)
  // This client has connected to the session.
}

について Session.SessionListener.onError(Session session, OpentokError error) メソッドは、接続時にエラーが発生した場合に呼び出されます。の値の説明については、OpentokException.ErrorCode 列挙型のドキュメントを参照してください。 code プロパティを使用する。

@Override
public void onError(Session session, OpentokError error) {
  Log.i(LOGTAG, "Exception: " + error.getMessage());
}

に電話する。 OTSession connect(withToken:error:) メソッドにクライアントのトークンを渡す:

var error: OTError?
session.connect(withToken: token, error: &error)

if let error = error {
    print("connect failed with error: \(error)")
}

について OTSessionDelegate sessionDidConnect(_:) メッセージは、クライアントが Vonage Video セッションに接続するときに送信されます。

について OTSessionDelegate session(_:didFailWithError:) が送信される。

のドキュメントを参照。 OTSessionErrorCode enum の値の説明については code プロパティを使用する。

接続状況の監視(スウィフト)

接続ステータスは sessionConnectionStatus プロパティを使用する:

session.sessionConnectionStatus

有効な値は OTSessionConnectionStatus enum.

このプロパティを監視するために、キー・バリュー・オブザーバーを使用することができます。しかし OTSessionDelegate sessionDidConnect(_:) そして OTSessionDelegate sessionDidDisconnect(_:) メッセージは、セッションが接続したり切断したりするときに、セッションのデリゲートに送られる。

に電話する。 [OTSession connectWithToken:error:] メソッドにクライアントのトークンを渡す:

OTError* error = nil;
[session connectWithToken:kToken error:&error];
if (error) {
  NSLog(@"connect failed with error: (%@)", error);
}

について [OTSessionDelegate session:didConnect] メッセージは、クライアントが Vonage Video セッションに接続するときに送信されます。

について OTSessionDelegate session:didFailWithError:] は接続エラーが発生したときに送られる。詳細は OTSessionErrorCode enum の値の説明については code プロパティを使用する。

接続状況の監視(Objective C)

接続ステータスは sessionConnectionStatus プロパティを使用する:

session.sessionConnectionStatus

有効な値は OTSessionConnectionStatus enum.

このプロパティを監視するために、キー・バリュー・オブザーバーを使用することができます。しかし [OTSessionDelegate sessionDidConnect:] そして [OTSessionDelegate sessionDidDisconnect:] メッセージは、セッションが接続したり切断したりするときに、セッションのデリゲートに送られる。

に電話する。 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 プロパティを使用する。

に電話する。 otc_session_connect() 関数である:

otc_session_connect(session, TOKEN);

この関数は、クライアントを Vonage Video セッションに接続します。2つの引数を取ります:

  • について otc_session 構造のインスタンスである。
  • Vonage Videoトークン文字列。

接続に成功すると on_connected のコールバック関数である。 otc_session_callbacks 構造体が呼び出される。エラー時には on_error のコールバック関数である。 otc_session_callbacks と呼ばれる。

セッションからの切断

ユーザーをセッションから切断する方法について説明します。

をアンマウントすると、クライアントはセッションから切断される。 OTSession コンポーネントを使用している。

セッションを切断するには disconnect() メソッドを呼び出します:

session.disconnect();

セッションを切断するには Session.disconnect() メソッドを使用する。

mSession.disconnect();

切断の検出(アンドロイド)

について Session.SessionListener.onDisconnected(Session session) メソッドは、クライアントがセッションから切断するときに呼び出される。

@Override
public void onDisconnected(session) {
  // This client has disconnected to the session.
}

セッションへの接続が、接続成功後に発生したエラーによって切断された場合 Session.SessionListener.onError(Session session, OpentokError error) メソッドは Session.SessionListener.onDisconnected(Session session) メソッドに渡されます。メソッドに渡されるOpentokErrorオブジェクトは Session.SessionListener.onError(Session session, OpentokError error) メソッドは切断の理由を記述する。

セッションを切断するには OTSession disconnect(_:) メソッドを使用する。

var error: OTError?
session.disconnect(&error)

if let error = error {
    print("disconnect failed with error: \(error)")
}

切断の検出(スウィフト)

について OTSessionDelegate sessionDidDisconnect(_:) メッセージがセッションのデリゲートに送られる。

アプリが中断されると、セッションは自動的に切断されることに注意してください。

セッションへの接続が、接続成功後に発生したエラーによって切断された場合 OTSessionDelegate session(_:didFailWithError:) メッセージは OTSessionDelegate sessionDidDisconnect(_:) というメッセージを送った。

について OTSessionErrorCode を定義している。 code に渡されたOTErrorオブジェクトのプロパティ。 OTSessionDelegate session(_:didFailWithError:) メッセージには、切断の理由が書かれている。

セッションを切断するには [OTSession disconnect:] メソッドを使用する。

OTError* error = nil;
[session disconnect:&error];
if (error) {
  NSLog(@"disconnect failed with error: (%@)", error);
}

切断の検出(Objective C)

について [OTSessionDelegate sessionDidDisconnect:] メッセージがセッションのデリゲートに送られる。

アプリが中断されると、セッションは自動的に切断されることに注意してください。

セッションへの接続が、接続成功後に発生したエラーによって切断された場合 [OTSessionDelegate session:DidFailWithError:] メッセージは [OTSessionDelegate sessionDidDisconnect:] メッセージで指定します。OTSessionErrorCode 列挙型は、以下のものを定義する。 code に渡されたOTErrorオブジェクトのプロパティ。 [OTSessionDelegate session:DidFailWithError:] メッセージには、切断の理由が書かれている。

セッションを切断するには Session.Disconnect() メソッドを使用する:

session.Disconnect();

切断の検出(Windows)

について Session.Disconnected メッセージは、クライアントが Vonage Video セッションから切断するときに送信されます。

private void Session_Disconnected(object sender, EventArgs e)
{
    Console.WriteLine("Session disconnected");
}

セッションへの接続が、接続成功後に発生したエラーによって切断された場合 Session.Error イベントは Session.Disconnected イベントを開催する。その ErrorEventArgs オブジェクトが渡される。 Session.Error イベントハンドラは、接続が切断された理由を定義する。

セッションを切断するには otc_session_disconnect() 関数である:

otc_session_disconnect(session);

セッションに再接続しない場合は otc_session_delete() そして otc_destroy() の機能がある:

otc_session_delete(session);
session = NULL;

otc_destroy();

切断の検出(Linux)

クライアントがOpenTokセッションから切断すると on_disconnected のコールバック関数である。 otc_session_callbacks と呼ばれる。

クライアントの接続と切断の検出

クライアントがセッションに接続したときと切断したときの検出方法について説明します。

について OTSession オブジェクトは connectionCreated イベントをディスパッチします。OTSessionオブジェクトは connectionDestroyed イベントが発生する。これらのイベントは ConnectionEvent クラスは connection これは、イベントに関連する接続(作成または破棄)の Connection オブジェクトです:

let this.connectionCount = 0;
const this.sessionEventHandlers = {
  connectionCreated: function (event) {
    connectionCount++;
    if (event.connection.connectionId != session.connection.connectionId) {
      console.log('Another client connected. ' + connectionCount + ' total.');
    }
  },
  connectionDestroyed: function connectionDestroyedHandler(event) {
    connectionCount--;
    console.log('A client disconnected. ' + connectionCount + ' total.');
  }
  sessionConnected: function (event) {
    // include your own client's connection in the count
    connectionCount++;
  },
};

// reference later in JSX:

<OTSession
  applicationId={this.apiKey}
  sessionId={this.sessionId}
  token={this.token}
  eventHandlers={this.sessionEventHandlers}
>
    {/* ... */}

Session オブジェクトは connectionCreated イベントをディスパッチします。セッションオブジェクトは connectionDestroyed イベントが発生します。これらのイベントはConnectionEventクラスによって定義されます。 connection これは、イベントに関連する接続(作成または破棄)の Connection オブジェクトです:

var connectionCount;
session.on({
  connectionCreated: function (event) {
    connectionCount++;
    if (event.connection.connectionId != session.connection.connectionId) {
      console.log('Another client connected. ' + connectionCount + ' total.');
    }
  },
  connectionDestroyed: function connectionDestroyedHandler(event) {
    connectionCount--;
    console.log('A client disconnected. ' + connectionCount + ' total.');
  }
});
session.connect(token, function (error) {
  if (error) {
    console.log("Failed to connect.");
  } else {
    console.log('You have connected to the session.');
  }
});

セッションに接続しているときは Session.ConnectionListener.onConnectionCreated(Session session, Connection connection) メソッドは、新しいクライアント(自分のクライアント以外)がセッションに接続したときに呼び出される。

について Session.ConnectionListener.onConnectionDestroyed(Session session, Connection connection) メソッドは、(自分以外の)クライアントがセッションから抜けるときに呼び出されます。このメソッドに渡される Connection オブジェクトは、セッションから離脱したコネクションを定義します。

これらの接続イベントのリスナー・オブジェクトを追加するには setConnectionListener(Session.ConnectionListener listener) メソッドを呼び出します:

mSession.setSessionListener(this);


@Override
public void onConnectionCreated(Session session, Connection connection)
{
  // New client connected to the session
}

@Override
public void onConnectionDestroyed(Session session, Connection connection)
{
  // A client disconnected from the session
}

について OTSessionDelegate session(_: connectionCreated:) メッセージは、他のクライアントがセッションに接続したときに(そしてあなたが接続したときにセッションに接続したクライアントごとに)、セッションのデリゲートに送られる。

について OTSessionDelegate session(_: connectionDestroyed:) メッセージは、他のクライアントがセッションから切断したときに、セッションのデリゲートに送られる。

について [OTSessionDelegate session:connectionCreated:] メッセージは、他のクライアントがセッションに接続したときに(そしてあなたが接続したときにセッションに接続したクライアントごとに)、セッションのデリゲートに送られる。

について [OTSessionDelegate session:connectionDestroyed:] メッセージは、他のクライアントがセッションから切断したときに、セッションのデリゲートに送られる。

セッションに接続しているときは 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.
}

セッションに接続すると on_connection_created のコールバック関数である。 otc_session_callbacks structは、(自分以外の)新しいクライアントがセッションに接続したときに呼び出される。この connection のインスタンスへのポインタである。 otc_connection セッションに接続しているクライアントに対応する構造体。

について on_connection_dropped のコールバック関数である。 otc_session_callbacks structは、(自分以外の)クライアントがセッションから切断したときに呼び出される。この connection へのポインタである。 otc_connection struct は、クライアントがセッションから切断することに対応する。

切断の検出

を設定する。 EventListner ユーザがセッションから切断された場合に関数を実行する。

例えば、ユーザーが接続を切断し、セッションに接続されなくなるたびに、この関数はユーザーに通知することができます。

クライアントがセッションから切断すると OTSession コンポーネントは sessionDisconnected イベントを開催する:

<OTSession
  applicationId="your-api-key"
  sessionId="your-session-id"
  token="your-session-token"
  eventHandlers={{
    sessionDisconnected: event => {
        console.log('disconnected', event);
      },
    connected: event => {
      console.log('subscriber connected', event);
    },
  }}
>
  <OTPublisher style={{ width: 100, height: 100 }}/>
  <OTSubscriber style={{ width: 100, height: 100 }} />
</OTSession>

クライアントがセッションから切断すると、Session オブジェクトは sessionDisconnected イベントを開催する:

session.on("sessionDisconnected", function (event) {
  // The event is defined by the SessionDisconnectEvent class
  if (event.reason == "networkDisconnected") {
    alert("Your network connection terminated.")
  }
});
session.connect(token);

について reason プロパティには、セッションが切断された理由を表す文字列を指定します。例えば、前の例では、ネットワーク接続が終了したために切断された場合、ユーザに通知します。

詳しくは セッション切断イベント.

自動再接続

クライアントは、予期せず切断されたセッションに自動的に再接続を試みます(ネットワーク接続の低下などによる)。

クライアントが切断され、再接続されるときにディスパッチされるイベントに応答したい場合を除き、クライアントが自動的に再接続されるようにコードを追加する必要はない。

クライアントは、予期せず切断されたセッションに自動的に再接続しようとします(ネットワーク接続の切断など)。クライアントが切断され再接続されたときにディスパッチされるイベントに応答したい場合を除き、クライアントが自動的に再接続するようにコードを追加する必要はありません。

接続が切断され、クライアントが再接続しようとすると OTSession オブジェクトは sessionReconnecting イベントが発生する。接続が回復すると Session オブジェクトは sessionReconnected.クライアントが接続を復元できない場合、クライアントはセッションから切断し、Sessionオブジェクトは sessionDisconnected.

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる:

<OTSession
  applicationId={this.apiKey}
  sessionId={this.sessionId}
  token={this.token}
  eventHandlers={{
    sessionReconnecting: event => {
      // Display a user interface notification.
    },
    sessionReconnected: event => {
      // Adjust user interface.
    },
    sessionDisconnected: event => {
      // Adjust user interface.
    },
  }
>
    {/* ... */}

クライアントがセッションから一時的に切断すると、発行したストリームをサブスクライブしているクライアントのSubscriberオブジェクトは、発行したストリームがドロップしたときと、自動的に再開したとき(または再開した場合)にイベントをディスパッチします。詳細については 自動再接続.

これらのイベントの使い方を示すサンプルコードについては オープントック・リコネクション GitHubのレポにある。

接続が切断され、クライアントが再接続しようとすると、Sessionオブジェクトは reconnecting イベントが発生します。接続が回復すると、Sessionオブジェクトは reconnected イベントが発生します。クライアントが接続を復元できない場合、クライアントはセッションから切断し、Sessionオブジェクトは sessionDisconnected イベントを開催する。

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる:

session.on(
  sessionReconnecting: function() {
    // Display a user interface notification.
  },
  sessionReconnected: function() {
    // Adjust user interface.
  },
  sessionDisconnected: function() {
    // Adjust user interface.
  }
);

クライアントがセッションから一時的に切断すると、発行したストリームをサブスクライブしているクライアントのSubscriberオブジェクトは、発行したストリームがドロップしたときと、自動的に再開したとき(した場合)にイベントをディスパッチします。

詳しくは 自動再接続 を参照してください。

デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(成功した場合に)送信されます。シグナルは retryAfterReconnect プロパティ false に渡すオプションに Session.signal() メソッドを使って、切断中にシグナルがキューに入れられないようにする。

詳しくは 自動再接続中に信号が送信されないようにする.

接続が切断され、クライアントが再接続しようとすると Session.ReconnectionListener.onReconnecting(Session session) メソッドが呼び出される。接続が回復すると Session.ReconnectionListener.onReconnected(Session session) メソッドが呼び出される。

クライアントが接続を復元できない場合、クライアントはVonage Videoセッションから切断され、次のようになります。 Session.SessionListener.onDisconnected(Session session) メソッドが呼び出される。

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる:

// In the implementation of the Session.ReconnectionListener interface
@Override
public void onReconnecting(session) {
  // Display a user interface notification.
}

public void onReconnected(session) {
  // Adjust user interface.
}

// In the implementation of the Session.SessionListener interface
@Override
public void onDisconnected(session) {
  // Adjust user interface.
}

クライアントがセッションから一時的に切断されると、発行したストリームを購読しているクライアントのSubscriberKit.StreamListenerインターフェイスの実装にあるメソッドが、発行したストリームがドロップしたときと、自動的に再開したときに(または再開したときに)呼び出されます。

詳細は ストリームのセッション離脱と再接続の検出 ステップ ストリームを購読する チュートリアル

デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(そして成功したときに)送信されます。このとき Session.sendSignal(String type, String data, Connection connection, boolean retryAfterReconnect) メソッドで retryAfterReconnect パラメータを false を使えば、切断中にシグナルがキューに入るのを防ぐことができる。

詳しくは 自動再接続中に信号が送信されないようにする.

接続が切断され、クライアントが再接続しようとすると OTSessionDelegate sessionDidBeginReconnecting(_:) メッセージがOTSessionオブジェクトのデリゲートに送られる。接続が回復すると OTSessionDelegate sessionDidReconnect(_:) メッセージが送信される。クライアントがコネクションを復元できない場合 OTSessionDelegate sessionDidDisconnect(_:) メッセージが送信される。

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる。

// OTSession delegate callbacks:
func sessionDidBeginReconnecting(_ session:OTSession) {
    // Display a user interface notification.
}

func sessionDidReconnect(_ session: OTSession) {
    // Adjust user interface.
}

func sessionDidDisconnect(_ session: OTSession) {
    // Adjust user interface.
}

クライアントがセッションから一時的に切断されたとき、あなたが公開しているストリームを購読しているクライアントのOKSubscriberKitDelegateオブジェクトは、あなたの公開しているストリームがドロップしたときと、自動的に再開したとき(した場合)にメッセージを送信します。

詳細は ストリームのセッション離脱と再接続の検出 ステップ ストリームを購読する チュートリアル

デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(そして成功したときに)送信されます。このとき OTSession signal(withType: string:connection:retryAfterReconnect:error:) メソッドを使って、切断中にシグナルがキューに入れられないようにする。

詳しくは シグナリング・チュートリアル.

接続が切断され、クライアントが再接続しようとすると [OTSessionDelegate sessionDidBeginReconnecting:] メッセージがOTSessionオブジェクトのデリゲートに送られる。接続が回復すると [OTSessionDelegate sessionDidReconnect:] メッセージが送信される。クライアントがコネクションを復元できない場合 [OTSessionDelegate sessionDidDisconnect:] メッセージが送信される。

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる。

// OTSession delegate callbacks:
- (void)sessionDidBeginReconnecting:(OTSession*)session
{
  // Display a user interface notification.
}

- (void)sessionDidReconnect:(OTSession*)session
{
  // Adjust user interface.
}

- (void)sessionDidDisconnect:(OTSession*)session
{
  // Adjust user interface.
}

クライアントがセッションから一時的に切断された場合、公開したストリームを購読しているクライアントのOKSubscriberKitDelegateオブジェクトは、公開したストリームがドロップしたときと、自動的に再開したとき(した場合)にメッセージを送信します。詳細は ストリームのセッション離脱と再接続の検出 ステップ ストリームを購読する チュートリアル

デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(そして成功したときに)送信されます。このとき [OTSession signalWithType:string:connection:retryAfterReconnect:error:] メソッドを使って、切断中にシグナルがキューに入るのを防いでください。詳しくは 自動再接続中に信号が送信されないようにする.

接続が切断され、クライアントが再接続しようとすると Session.ReconnectionStart イベントが送信される。接続が回復すると Session.ReconnectionSuccess イベントが送信されます。クライアントが接続を復元できない場合、クライアントは Vonage Video セッションから切断され 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 を使用して、切断中にシグナルがキューに入るのを防ぐことができます。詳しくは 自動再接続中に信号が送信されないようにする.

接続が切断され、クライアントが再接続しようとすると on_reconnection_started のコールバック関数である。 otc_session_callbacks 構造体が呼び出される。接続が回復すると on_reconnected のコールバック関数である。 otc_session_callbacks と呼ばれる。

クライアントが接続を復元できない場合、クライアントは OpenTok セッションから切断され、次のようになります。 on_disconnected のコールバック関数である。 otc_session_callbacks と呼ばれる。

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる。

他のクライアントがセッションから一時的に切断すると on_disconnected のコールバック関数である。 otc_subscriber_callbacks そのクライアントが発行したストリームに対するサブスクライバのための 構造体が呼び出される。そのクライアントの on_reconnected のコールバック関数である。 otc_subscriber_callbacks サブスクライバのための構造体は、クライアントが再接続し、ストリームが自動的 に再開されるとき(およびそのとき)に呼び出される。

詳細は ストリームのセッション離脱と再接続の検出 ステップ ストリームを購読する チュートリアル

デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(成功した場合に)送信されます。

切断中にシグナルがキューに入れられないようにするには、次のようにします。 otc_session_send_signal_with_options() 関数または otc_session_send_signal_to_connection_with_options () 関数を使用して retryAfterReconnect メンバー false での otc_signal_options 関数に渡す。

詳しくは 自動再接続中に信号が送信されないようにする.

セッション接続の問題のトラブルシューティング(JavaScript)

について Session.connect() メソッドにはコールバック関数があります。 error パラメータを使用する。このパラメータが存在し、定義されている場合 null またはundefined)の場合、接続時にエラーが発生します。このエラーをコードから探すことで、エンドユーザーがなぜ接続できなかったのかを特定することができます:

session.connect(token, function(err) {
  if (err) {
    // handle error
  } else {
    // connection succeeded
  }
});

接続を試みたときに戻ってくるエラーの多くは、無効または期限切れのトークンによるものです。

セッションへの接続が失敗するもう一つの一般的な理由は、エンドユーザーのインターネット接続によるものです。これには次のような例がある:

  • エンドユーザーがインターネットに接続できなくなった
  • エンドユーザーは、制限されたネットワーク上にいるため、一般的なポートがブロックされている。

この場合、コード1006のエラーが発生します。以下のコードを使用して対処することをお勧めします。セッションへの接続に失敗する他の理由としては、Vonageビデオサーバーがダウンしている、または何らかの予期せぬエラー(サーバーの500レベルエラーなど)が発生した場合などがあります。このようなことは頻繁に起こることではありませんが、このようなエラーに対処することは良い習慣です。

この指示に従えば、エラー処理コードは次のようになるはずだ:

session.connect(token, function(err) {
  if (err) {
    if (err.name === "OT_NOT_CONNECTED") {
      showMessage('Failed to connect. Please check your connection and try connecting again.');
    } else {
      showMessage('An unknown error occurred connecting. Please try again later.');
    }
  }
});

セッションへの接続に成功した後、接続が切れることがあります。この場合は sessionDisconnected イベントに "networkDisconnected "という理由が追加された:

session.on({
  sessionDisconnected: function(event) {
    if (event.reason === 'networkDisconnected') {
      showMessage('You lost your internet connection.'
        + 'Please check your connection and try connecting again.');
    }
  }
});

セッション接続の問題のトラブルシューティング(React Native)

接続しようとしたときに戻ってくるエラーの多くは、無効または期限切れのトークンが原因です。以下のトークンのベストプラクティスに従っていることを確認してください。 これ.

セッションへの接続が失敗するもう一つの一般的な理由は、エンドユーザーのインターネット接続によるものです。これには次のような例がある:

  • エンドユーザーがインターネットに接続できなくなった
  • エンドユーザーは、制限されたネットワーク上にいるため、一般的なポートがブロックされている。