Signalisierung – Web

Verwenden Sie die OpenTok-Signalisierungs-API, um Text und Daten zwischen Clients zu übertragen, die mit einer OpenTok-Sitzung verbunden sind.

Konzeptionelle Informationen zur OpenTok-Signalisierungs-API finden Sie in der Überblick über die Signalisierung Leitfaden für Entwickler.

Dieses Thema umfasst die folgenden Abschnitte:

Ein Signal an einen bestimmten Client in einer Sitzung senden

Um ein Signal an einen bestimmten Client in einer Sitzung zu senden, rufen Sie die Funktion signal() Methode des Session-Objekts und setzen Sie die to Eigenschaft der signal Parameter:

session.signal(
  {
    to: connection1,
    data:"hello"
  },
  function(error) {
    if (error) {
      console.log("signal error ("
                   + error.name
                   + "): " + error.message);
    } else {
      console.log("signal sent.");
    }
  }
);

Die to Die Eigenschaft ist eine Verbindung Objekt, das den mit der Sitzung verbundenen Clients entspricht, denen Sie ein Signal senden möchten. Sie erhalten Verweise auf Connection-Objekte, wenn das Session-Objekt sessionConnected und connectionCreated Veranstaltungen. Sie können das zu einem Stream gehörende Connection-Objekt auch abrufen, indem Sie die connection Eigenschaft des Stream-Objekts.

Die data Eigenschaft der signal „parameter“ ist die Datenzeichenfolge, die Sie mit der Nachricht senden. Diese Eigenschaft ist optional. Wenn Sie sie weglassen, wird die Nachricht ohne Dateninhalt gesendet. Die maximale Datengröße beträgt 8 KB.

Die completerHandler Parameter des signal() Die Methode wird aufgerufen, wenn der Aufruf der Methode erfolgreich ist oder fehlschlägt. Die error Der an den Completion-Handler übergebene Parameter wird auf null wenn der Aufruf erfolgreich ist. Wenn der Aufruf der Methode fehlschlägt, weist das Fehlerobjekt die folgenden Eigenschaften auf: code (ein numerischer Fehlercode), message (eine Zeichenfolge, die den Fehler beschreibt) und signal (ein Objekt, das dem signal Parameter, der an die signal() Methode).

Außerdem kannst du einen type Eigenschaft der signal Parameter. Hierbei handelt es sich um einen Zeichenfolgenwert, nach dem Clients filtern können, wenn auf Signale achten:

session.signal(
  {
    data:"hello",
    type:"textMessage"
  },
  function(error) {
    if (error) {
      console.log("signal error ("
                   + error.name
                   + "): " + error.message);
    } else {
      console.log("signal sent.");
    }
  }
);

Die maximale Länge der type string ist 128 Byte groß und darf nur Buchstaben (A-Z und a-z), Numbers (0-9), '-', '_' und '~' enthalten.

Weitere Informationen finden Sie in der Dokumentation zur Session.signal() Methode.

Ein Signal an alle Clients in einer Sitzung senden

Um ein Signal an alle Clients in einer Sitzung zu senden, rufen Sie die Funktion signal() Methode des Session-Objekts, aber nicht ein a festlegen to Eigenschaft für die signal Parameter:

session.signal(
  {
    data:"hello"
  },
  function(error) {
    if (error) {
      console.log("signal error ("
                   + error.name
                   + "): " + error.message);
    } else {
      console.log("signal sent.");
    }
  }
);

Weitere Informationen zu den anderen Optionen, die Sie an die signal() Methode, siehe der vorherige Abschnitt.

Wird diese Methode aufgerufen, ohne die Gruppe der Empfänger-Clients einzuschränken, werden mehrere Signale gesendet (jeweils eines an jeden Client in der Sitzung).

Empfang von Signalen in einer Sitzung

Um alle in einer Sitzung gesendeten Signale zu empfangen, fügen Sie einen Ereignis-Listener für das signal Ereignis, das vom Session-Objekt ausgelöst wird:

    session.on("signal", function(event) {
      console.log("Signal sent from connection " + event.from.id);
      // Process the event.data property, if there is any data.
    });

Sie können auch nur nach Signalen suchen, die auf einen bestimmten Typ eingestellt sind. (Sie können den Typ eines Signals optional festlegen, wenn Sie ein Signal senden.) Einen Ereignis-Listener für das signal:type Ereignis, wobei „type“ durch die Typ-Zeichenkette ersetzt wird. Das folgende Beispiel überwacht beispielsweise Signale vom Typ „foo“:

session.on("signal:foo", function(event) {
 console.log("Signal sent from connection " + event.from.id);
 // Process the event.data property, if there is any data.
});

Sie können die from Eigenschaft des Ereignisobjekts mit der connection Eigenschaft des Session-Objekts, um festzustellen, ob das Signal von Ihrem Client oder einem anderen gesendet wurde:

session.on("signal:foo", function(event) {
  if (connection && event.from.connectionId != session.connection.id) {
    // Signal received from another client
  }
}

Beachte, dass du ein REST-API-Aufruf um ein Signal von Ihrem Server aus zu senden, anstatt von einem mit der Sitzung verbundenen Client. In diesem Fall wird die from Eigenschaft des Ereignisobjekts wird auf null.

Verhindern des Sendens von Signalen während der automatischen Wiederherstellung der Verbindung

Clients versuchen, automatisch wieder eine Verbindung zu einer Sitzung herzustellen, von der sie unerwartet getrennt wurden (beispielsweise aufgrund eines Ausfalls der Netzwerkverbindung). Standardmäßig werden alle Signale, die Sie senden, während der Client vorübergehend von einer Sitzung getrennt ist, in eine Warteschlange gestellt und gesendet, sobald (und falls) die Verbindung erfolgreich wiederhergestellt wurde. Sie können die retryAfterReconnect Eigenschaft zu false in den Optionen, die Sie in der Session.signal() Methode, um zu verhindern, dass Signale in die Warteschlange gestellt werden, während die Verbindung zum Client unterbrochen ist. Weitere Informationen finden Sie unter Automatische Wiedereinschaltung.