Sinalização — Android

Use a API de sinalização do OpenTok para enviar texto e dados entre clientes conectados a uma sessão do OpenTok.

Para obter informações conceituais sobre a API de sinalização do OpenTok, consulte o Visão geral da sinalização guia do desenvolvedor.

Este tópico inclui as seguintes seções:

Envio de um sinal para um cliente específico em uma sessão

Para enviar um sinal a um cliente específico em uma sessão, chame a função sendSignal(String type, String data, Connection connection) método do objeto Session:

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

O type O parâmetro é um valor de cadeia de caracteres que os clientes podem usar para filtrar quando ficar atento aos sinais. Defina esse valor como uma string vazia caso não seja necessário definir um tipo.

O data O parâmetro é a carga útil de dados (uma String) que você envia junto com a mensagem. O limite para o tamanho dos dados é de 8 KB.

O connection O parâmetro é um Conexão objeto correspondente a um cliente conectado à sessão à qual você deseja enviar um sinal. Você obtém referências aos objetos Connection no onConnectionCreated(Session session, Connection connection) método do objeto Session.ConnectionListener implementado para a Session.

Observe que você pode usar um Chamada à API REST para enviar um sinal a partir do seu servidor, em vez de a partir de um cliente conectado à sessão. Nesse caso, o connection o parâmetro está definido como null.

Envio de um sinal para todos os clientes em uma sessão

Para enviar um sinal a todos os clientes em uma sessão, chame a função sendSignal(String type, String data) método do objeto Session:

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

O type O parâmetro é um valor de cadeia de caracteres que os clientes podem usar para filtrar quando ficar atento aos sinais. Defina esse valor como uma string vazia caso não seja necessário definir um tipo.

O data O parâmetro é a carga útil de dados (uma String) que você envia junto com a mensagem. O limite para o tamanho dos dados é de 8 KB.

Recebimento de sinais em uma sessão

Para começar a receber todos os sinais, ligue para o setSignalListener(Session.SignalListener listener) método do objeto Session, passando um objeto que implemente a interface Session.SignalListener:

 mSession.setSignalListener(this);

O onSignalReceived(Session session, String type, String data, Connection connection) O método do objeto SignalListener é chamado quando um sinal é recebido na sessão:

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

Observe que você pode usar um Chamada à API REST para enviar um sinal a partir do seu servidor, em vez de a partir de um cliente conectado à sessão. Nesse caso, o connection o parâmetro está definido como null.

Impedir que sinais sejam enviados durante a reconexão automática

Os clientes tentarão se reconectar automaticamente a uma sessão da qual tenham se desconectado inesperadamente (por exemplo, devido a uma queda na conectividade de rede). Por padrão, quaisquer sinais que você enviar enquanto o cliente estiver temporariamente desconectado de uma sessão são colocados em fila e enviados quando (e se) ele se reconectar com sucesso. Você pode usar o Session.sendSignal(String type, String data, Connection connection, boolean retryAfterReconnect) método e definir o retryAfterReconnect parâmetro para false para evitar que os sinais fiquem em fila enquanto o cliente estiver desconectado. Para obter mais informações, consulte Reconexão automática.