Signalisierung — Android
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 alle Clients in einer Sitzung senden
- Ein Signal an einen bestimmten Client in einer Sitzung senden
- Empfang von Signalen in einer Sitzung
- Verhindern des Sendens von Signalen während der automatischen Wiederherstellung der Verbindung
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 sendSignal(String type, String data, Connection connection) Methode des Session-Objekts:
mSession.sendSignal("chat", "Hello", mConnection1);
Die type „parameter“ ist ein Zeichenfolgenwert, nach dem Clients filtern können, wenn auf Signale achten. Setzen Sie diesen Wert auf eine leere Zeichenfolge, wenn Sie keinen Typ festlegen müssen.
Die data Der Parameter ist die Datenlast (ein String), die Sie mit der Nachricht senden. Die maximale Datengröße beträgt 8 KB.
Die connection Parameter ist ein Verbindung Objekt, das einem Client entspricht, der mit der Sitzung verbunden ist, an die Sie ein Signal senden möchten. Referenzen auf Connection-Objekte erhalten Sie in der onConnectionCreated(Session session, Connection connection) Methode des Objekts „Session.ConnectionListener“, die für die Session implementiert wurde.
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 connection auf den Parameter null.
Ein Signal an alle Clients in einer Sitzung senden
Um ein Signal an alle Clients in einer Sitzung zu senden, rufen Sie die Funktion sendSignal(String type, String data) Methode des Session-Objekts:
mSession.sendSignal("chat", "Hello");
Die type „parameter“ ist ein Zeichenfolgenwert, nach dem Clients filtern können, wenn auf Signale achten. Setzen Sie diesen Wert auf eine leere Zeichenfolge, wenn Sie keinen Typ festlegen müssen.
Die data Der Parameter ist die Datenlast (ein String), die Sie mit der Nachricht senden. Die maximale Datengröße beträgt 8 KB.
Empfang von Signalen in einer Sitzung
Um alle Signale zu empfangen, rufen Sie die setSignalListener(Session.SignalListener listener) Methode des Session-Objekts, wobei ein Objekt übergeben wird, das die Schnittstelle „Session.SignalListener“ implementiert:
mSession.setSignalListener(this);
Die onSignalReceived(Session session, String type, String data, Connection connection) Die Methode des SignalListener-Objekts wird aufgerufen, wenn in der Sitzung ein Signal empfangen wird:
@Override
protected void onSignalReceived(Session session, String type, String data, Connection connection) {
String myConnectionId = session.getConnection().getConnectionId();
if (connection != null && connection.getConnectionId().equals(myConnectionId)) {
// 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 connection auf den Parameter 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 Session.sendSignal(String type, String data, Connection connection, boolean retryAfterReconnect) Methode und setzen Sie die retryAfterReconnect Parameter zu false 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.