セッションへの参加 — Linux
を使用して セッションID そして トークン, OpenTok Linux SDK を使用して OpenTok セッションに接続できます。
このトピックには以下のセクションが含まれます:
otc_session インスタンスのインスタンス化とセッション関連のコールバック
型の構造体を作成する。 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 この構造は、OpenTokセッションに関連するイベントが発生した際に
呼び出されるコールバック関数です。前の例には、
以下のコールバックが含まれています:
-
on_connected-- のときに呼び出される。otc_session_connect()関数(下記参照) インスタンスをOpenTokセッションに正常に接続します。 -
on_stream_received-- OpenTok セッションに新しいストリームが追加されたときに呼び出されます (別のクライアントがセッションにストリームを公開したとき)。 -
on_stream_dropped-- 別のクライアントのストリームが OpenTok セッションから 切断されたときに呼び出されます。これは、クライアントがストリームの配信を停止した場合や、 クライアントのネットワーク接続が切断された場合に発生することがあります。 -
on_disconnected-- アプリケーションが OpenTok セッションから切断されたときに呼び出されます(以下を参照)。 -
on_error-- セッションへの接続中にエラーが発生した際に呼び出されます。 この関数には、エラー文字列と、 によって定義されるエラーコードのパラメータが含まれています。otc_session_error_codeを列挙する。
すべてのコールバックは、アプリケーションスレッドやメインスレッド上ではなく、内部スレッド上で実行されます。 アプリケーションは、内部スレッドのブロックを防ぐため、 コールバックをできるだけ速やかに返す必要があります。
参照 otc_session_callbacks 各コールバック関数の詳細については、OpenTok Linux SDK リファレンスを参照してください。
初期化後 otc_session_callbacks 構造体を呼び出す。 otc_session_new()
関数に、OpenTok API キーの文字列、OpenTok セッション ID の文字列、
および otc_session_callbacks 構造になっている:
otc_session *session = NULL;
session = otc_session_new(API_KEY, SESSION_ID, &session_callbacks);
について otc_session_new() この関数は、 otc_session 構造、
これは OpenTok セッションを表します。
高度なセッション設定を使用するには otc_session_new_with_settings(),
その代わりに otc_session_new() 関数。この関数は、
settings パラメータへのポインタである。 otc_session_settings struct
で、詳細設定を定義します。たとえば、次の
コードでは、 otc_session_settings_new () インスタンス化するための関数
an otc_session_settings 構造体と呼び出し
otc_session_settings_set_connection_events_suppressed(OTC_TRUE) SDKが接続イベントを抑制するように設定し、大規模なインタラクティブ動画セッションに対応します。
その後、 otc_session_settings struct を
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(API_KEY,
SESSION_ID,
&session_callbacks,
session_settings);
加えて otc_session_settings_set_connection_events_suppressed(),
以下の関数を使用すると、セッションの詳細設定を行うことができます:
-
otc_session_settings_set_custom_ice_config()— ICEサーバーのカスタム設定が可能になります。 これは、 設定可能なTURN機能. -
otc_session_settings_set_ip_whitelist()— これは、 許可IPアドレス機能 として利用可能です アドオン機能. -
otc_session_settings_set_proxy_url()— IPプロキシのURLを設定します。 詳しくは、 IPプロキシ開発者ガイド.
セッションへの接続
セッションおよびパブリッシャーのインスタンスを作成したら、 otc_session_connect()
関数である:
otc_session_connect(session, TOKEN);
この関数は、クライアントを OpenTok セッションに接続します。この関数には 2 つの引数が渡されます:
-
について
otc_session構造のインスタンスである。 -
OpenTokのトークン文字列。
接続に成功すると on_connected のコールバック関数
otc_session_callbacks 構造体が呼び出される。エラー時には on_error コールバック
関数 otc_session_callbacks と呼ばれる。
セッションからの切断
セッションを切断するには otc_session_disconnect() 関数である:
otc_session_disconnect(session);
そのセッションに再度接続する予定がない場合は、
otc_session_delete() そして otc_destroy() の機能がある:
otc_session_delete(session);
session = NULL;
otc_destroy();
切断の検出
クライアントがOpenTokセッションから切断すると on_disconnected
のコールバック関数 otc_session_callbacks と呼ばれる。
自動再接続
クライアントは、予期せず接続が切断されたセッションに対して、自動的に再接続を試みます (たとえば、ネットワーク接続が途絶えた場合など)。クライアントが切断および再接続した際に発生するイベントに対応したい場合を除き、 クライアントが自動的に再接続するようにするためのコードを追加する必要はありません。
接続が切断され、クライアントが再接続しようとすると on_reconnection_started
のコールバック関数 otc_session_callbacks struct が呼び出されます。接続が復旧すると、
その on_reconnected のコールバック関数である。 otc_session_callbacks struct が呼び出されます。
クライアントが接続を復元できない場合、クライアントは 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
関数に渡す値。詳細については、以下を参照してください。
自動再接続中に信号が送信されないようにする.
他のクライアントの接続と切断の検出
セッションに接続すると on_connection_created コールバック関数
の otc_session_callbacks struct は、新しいクライアント(自身以外の)が
セッションに接続した際に呼び出されます。この connection その関数の引数は、
あるインスタンスへのポインタであり、 otc_connection セッションに接続しているクライアントに対応する構造体。
について on_connection_dropped のコールバック関数である。 otc_session_callbacks struct
は、クライアント(自身以外の)がセッションから切断されたときに呼び出されます。
この connection へのポインタである。 otc_connection struct
クライアントがセッションから切断された場合に該当する。