Signalisation — Android

Utilisez l'API de signalisation OpenTok pour échanger du texte et des données entre les clients connectés à une session OpenTok.

Pour obtenir des informations conceptuelles sur l'API de signalisation OpenTok, consultez le Aperçu de la signalisation guide du développeur.

Cette rubrique comprend les sections suivantes :

Envoi d'un signal à un client spécifique au cours d'une session

Pour envoyer un signal à un client spécifique au cours d'une session, appelez la fonction sendSignal(String type, String data, Connection connection) de l'objet Session :

mSession.sendSignal("chat", "Hello", mConnection1);

Les type Le paramètre est une chaîne de caractères que les clients peuvent utiliser comme critère de filtrage lorsque être à l'écoute des signaux. Définissez cette valeur sur une chaîne vide si vous n'avez pas besoin de spécifier un type.

Les data Le paramètre correspond à la charge utile (une chaîne de caractères) que vous envoyez avec le message. La taille maximale des données est de 8 Ko.

Les connection est un paramètre Connexion objet correspondant à un client connecté à la session à laquelle vous souhaitez envoyer un signal. Vous obtenez des références aux objets Connection dans le onConnectionCreated(Session session, Connection connection) méthode de l'objet `Session.ConnectionListener` implémentée pour la session.

Notez que vous pouvez utiliser un Appel à l'API REST pour envoyer un signal depuis votre serveur, plutôt que depuis un client connecté à la session. Dans ce cas, le connection est fixé à null.

Envoi d'un signal à tous les clients d'une session

Pour envoyer un signal à tous les clients d'une session, appelez la fonction sendSignal(String type, String data) de l'objet Session :

mSession.sendSignal("chat", "Hello");

Les type Le paramètre est une chaîne de caractères que les clients peuvent utiliser comme critère de filtrage lorsque être à l'écoute des signaux. Définissez cette valeur sur une chaîne vide si vous n'avez pas besoin de spécifier un type.

Les data Le paramètre correspond à la charge utile (une chaîne de caractères) que vous envoyez avec le message. La taille maximale des données est de 8 Ko.

Réception de signaux au cours d'une session

Pour commencer à recevoir tous les signaux, appelez le setSignalListener(Session.SignalListener listener) méthode de l'objet Session, en lui transmettant un objet qui implémente l'interface Session.SignalListener :

 mSession.setSignalListener(this);

Les onSignalReceived(Session session, String type, String data, Connection connection) La méthode de l'objet SignalListener est appelée lorsqu'un signal est reçu dans la session :

@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
    }
}

Notez que vous pouvez utiliser un Appel à l'API REST pour envoyer un signal depuis votre serveur, plutôt que depuis un client connecté à la session. Dans ce cas, le connection est fixé à null.

Empêcher l'envoi de signaux lors d'une reconnexion automatique

Les clients tenteront de se reconnecter automatiquement à une session dont ils se sont déconnectés de manière inattendue (par exemple, en raison d'une interruption de la connexion réseau). Par défaut, tous les signaux que vous envoyez pendant que le client est temporairement déconnecté d'une session sont mis en file d'attente et envoyés lorsque (et si) la reconnexion aboutit. Vous pouvez utiliser la Session.sendSignal(String type, String data, Connection connection, boolean retryAfterReconnect) et définir la méthode retryAfterReconnect au paramètre false afin d'éviter que les signaux ne s'accumulent dans la file d'attente lorsque le client est déconnecté. Pour plus d'informations, consultez Reconnexion automatique.