An einer Sitzung teilnehmen — Linux

Mit einem Sitzungs-ID und Token, können Sie mithilfe des OpenTok-Linux-SDK eine Verbindung zur OpenTok-Sitzung herstellen.

Dieses Thema umfasst die folgenden Abschnitte:

Instanziierung einer otc_session-Instanz und sitzungsbezogene Rückrufe

Erstellen Sie eine Struktur vom Typ otc_session_callbacks, sowie Funktionszeiger auf Callback-Funktionsmitglieder. Zum Beispiel:


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;

Verwenden Sie die user_data Mitglied des otc_session_callbacks Struktur zum Festlegen von Daten, auf die Sie in den Callback-Funktionen möglicherweise verweisen möchten. In diesem Beispiel legen wir sie als Zeiger auf ein String-Objekt fest. Es könnte sich jedoch auch um einen Zeiger auf eine Instanz eines anderen Typs handeln, der aussagekräftige Informationen enthält.

Die anderen Mitglieder der otc_session_callbacks Es handelt sich dabei um Callback-Funktionen, die aufgerufen werden, wenn Ereignisse im Zusammenhang mit der OpenTok-Sitzung eintreten. Das vorherige Beispiel enthält Callbacks für Folgendes:

  • on_connected -- Wird aufgerufen, wenn die otc_session_connect() Die Funktion (siehe unten) stellt erfolgreich eine Verbindung zwischen der Instanz und einer OpenTok-Sitzung her.

  • on_stream_received -- Wird aufgerufen, wenn in der OpenTok-Sitzung ein neuer Stream vorliegt (wenn ein anderer Client einen Stream in der Sitzung veröffentlicht).

  • on_stream_dropped -- Wird aufgerufen, wenn der Stream eines anderen Clients aus der OpenTok-Sitzung entfernt wird. Dies kann passieren, wenn der Client die Übertragung des Streams beendet oder wenn die Netzwerkverbindung des Clients unterbrochen wird.

  • on_disconnected -- Wird aufgerufen, wenn die Anwendung die Verbindung zur OpenTok-Sitzung trennt (siehe unten).

  • on_error -- Wird aufgerufen, wenn beim Herstellen einer Verbindung zur Sitzung ein Fehler auftritt. Diese Funktion enthält Parameter für eine Fehlermeldung und einen Fehlercode, der durch die otc_session_error_code enum.

Alle Callbacks werden nicht im Anwendungs- oder Haupt-Thread, sondern in einem internen Thread ausgeführt. Die Anwendung sollte den Callback so schnell wie möglich zurückgeben, um eine Blockierung des internen Threads zu vermeiden.

Siehe otc_session_callbacks Weitere Informationen zu den einzelnen Callback-Funktionen finden Sie in der OpenTok-Linux-SDK-Referenz.

Nach der Initialisierung der otc_session_callbacks Struktur, rufen Sie die otc_session_new() Funktion, wobei Sie Ihren OpenTok-API-Schlüssel, die OpenTok-Sitzungs-ID und einen Zeiger auf die otc_session_callbacks Struktur:

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

Die otc_session_new() Die Funktion gibt einen otc_session Struktur, die eine OpenTok-Sitzung darstellt.

Um erweiterte Sitzungseinstellungen zu verwenden, rufen Sie den otc_session_new_with_settings(), anstelle des otc_session_new() Funktion. Diese Funktion nimmt ein settings Parameter, der ein Zeiger auf eine otc_session_settings struct , die die erweiterten Einstellungen definiert. Der folgende Code verwendet beispielsweise die otc_session_settings_new () Funktion zum Instanziieren eines otc_session_settings Struktur und Aufrufe otc_session_settings_set_connection_events_suppressed(OTC_TRUE) damit das SDK Verbindungsereignisse unterdrückt, um umfangreiche interaktive Videositzungen zu unterstützen. Anschließend übergibt es die otc_session_settings struct in die otc_session_new_with_settings() Funktion:

// 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);

Zusätzlich zu otc_session_settings_set_connection_events_suppressed(), Mit den folgenden Funktionen können Sie erweiterte Einstellungen für eine Sitzung vornehmen:

Verbinden mit einer Sitzung

Nachdem Sie die Instanz der Sitzung und des Publishers erstellt haben, rufen Sie die otc_session_connect() Funktion:

  otc_session_connect(session, TOKEN);

Diese Funktion verbindet den Client mit der OpenTok-Sitzung. Sie benötigt zwei Argumente:

  • Die otc_session Struktur-Instanz.

  • Die OpenTok-Token-Zeichenkette.

Nach erfolgreicher Verbindung wird die on_connected Callback-Funktion der otc_session_callbacks Struktur aufgerufen wird. Im Fehlerfall wird die on_error Callback- Funktion der otc_session_callbacks Struktur aufgerufen wird.

Trennen der Verbindung zu einer Sitzung

Um eine Sitzung zu beenden, rufen Sie die Funktion otc_session_disconnect() Funktion:

otc_session_disconnect(session);

Falls Sie die Verbindung zur Sitzung nicht wiederherstellen möchten, sollten Sie die otc_session_delete() und otc_destroy() Funktionen:

otc_session_delete(session);
session = NULL;

otc_destroy();

Erkennen, wenn Sie die Verbindung unterbrochen haben

Wenn der Client die Verbindung zur OpenTok-Sitzung trennt, wird die on_disconnected Callback-Funktion der otc_session_callbacks Struktur aufgerufen wird.

Automatische Wiedereinschaltung

Clients versuchen, automatisch wieder eine Verbindung zu einer Sitzung herzustellen, von der sie unerwartet getrennt wurden (beispielsweise aufgrund einer Unterbrechung der Netzwerkverbindung). Sie müssen keinen Code hinzufügen, damit die Clients automatisch wieder eine Verbindung herstellen, es sei denn, Sie möchten auf Ereignisse reagieren, die auftreten, wenn Ihr Client die Verbindung verliert und wieder herstellt.

Wenn die Verbindung unterbrochen wird und der Client versucht, die Verbindung wiederherzustellen, wird die on_reconnection_started Callback-Funktion der otc_session_callbacks struct aufgerufen wird. Wenn die Verbindung wiederhergestellt ist, wird die on_reconnected Callback-Funktion des otc_session_callbacks struct aufgerufen wird. Wenn der Client die Verbindung nicht wiederherstellen kann, trennt er die Verbindung zur OpenTok-Sitzung, und die on_disconnected Callback-Funktion des otc_session_callbacks Struktur aufgerufen wird.

Als Reaktion auf diese Ereignisse kann Ihre Anwendung (optional) Benachrichtigungen in der Benutzeroberfläche anzeigen, die auf den Status „vorübergehende Unterbrechung“, „Wiederverbindung“ und „Unterbrechung“ hinweisen.

Wenn ein anderer Client vorübergehend die Verbindung zu einer Sitzung unterbricht, wird die on_disconnected Callback-Funktion der otc_subscriber_callbacks Es wird eine Struktur für einen Abonnenten eines von diesem Client veröffentlichten Streams aufgerufen. Die on_reconnected Callback-Funktion der otc_subscriber_callbacks Die Struktur für den Abonnenten wird aufgerufen, wenn (und sofern) der Client die Verbindung wiederherstellt und der Stream automatisch fortgesetzt wird. Weitere Informationen finden Sie unter Automatische Wiedereinschaltung Abschnitt im Entwicklerhandbuch unter „Streams abonnieren“.

Standardmäßig werden alle Signale, die Sie senden, während Ihr Client vorübergehend von einer Sitzung getrennt ist, in eine Warteschlange gestellt und gesendet, sobald (und falls) Sie die Verbindung wiederherstellen. Um zu verhindern, dass Signale in die Warteschlange gestellt werden, während Sie getrennt sind, können Sie die otc_session_send_signal_with_options() Funktion oder die otc_session_send_signal_to_connection_with_options () Funktion und legen Sie die retryAfterReconnect Mitglied zu false im otc_signal_options die Sie an die Funktion übergeben. Weitere Informationen finden Sie unter Verhindern des Sendens von Signalen während der automatischen Wiederherstellung der Verbindung.

Erkennen, wann andere Clients eine Verbindung hergestellt und getrennt haben

Sobald Sie eine Verbindung zu einer Sitzung hergestellt haben, wird die on_connection_created Callback-Funktion des otc_session_callbacks Die Funktion „struct“ wird aufgerufen, wenn sich ein neuer Client (außer Ihrem eigenen) mit der Sitzung verbindet. Die connection Der Parameter dieser Funktion ist ein Zeiger auf eine Instanz einer otc_connection struct, die dem Client entspricht, der sich mit der Sitzung verbindet.

Die on_connection_dropped Callback-Funktion des otc_session_callbacks struct wird aufgerufen, wenn ein Client (außer Ihrem eigenen) die Verbindung zur Sitzung trennt. Die connection Parameter dieser Funktion ist ein Zeiger auf den otc_connection struct entsprechend der Trennung des Clients von der Sitzung.