Sinalização — React Native

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, defina o signal prop do componente OTSession e definir o to propriedade do signal objeto associado ao ID da conexão:

<OTSession
  signal={{
    to: 'connection-id',
    data: 'hello',
  }}
/>

O to A propriedade é um ID de conexão de um cliente conectado à sessão à qual você deseja enviar um sinal. Você obtém os IDs de conexão dos clientes quando o objeto OTSession despacha connectionCreated eventos.

O data propriedade do signal prop é a sequência de dados que você envia junto com a mensagem. Essa propriedade é opcional. Se você a omitir, a mensagem será enviada sem carga útil de dados. O limite para o tamanho dos dados é de 8 KB.

Além disso, você pode passar um type propriedade do sinal. Trata-se de um valor de string que os clientes podem usar como critério de filtragem quando ficar atento aos sinais:

<OTSession
  signal={{
    to: 'connection-id',
    data: 'hello',
    type: 'textMessage',
  }}
/>

O comprimento máximo do type A sequência de caracteres tem 128 bytes e deve conter apenas letras (A-Z e a-z), números (0-9), '-', '_' e '~'.

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

Para enviar um sinal a um cliente específico em uma sessão, defina o signal prop do componente OTSession, mas faça não definir o to propriedade do signal objeto associado ao ID da conexão:

<OTSession
  signal={{
    data: 'hello',
  }}
/>

Para obter detalhes sobre as outras opções que você passa para o signal adereço, veja a seção anterior.

Chamar esse método sem limitar o conjunto de clientes destinatários resultará no envio de vários sinais (um para cada cliente na sessão).

Recebimento de sinais em uma sessão

Para começar a receber todos os sinais enviados em uma sessão, adicione um manipulador de eventos para o signal evento, disparado pelo componente OTSession:

<OTSession
  apiKey="your-api-key"
  sessionId="your-session-id"
  token="your-session-token"
  eventHandlers={{
    signal: event => {
      console.log('signal received from connection ID:', event.connectionId);
      console.log('signal data:', event.data);
      console.log('signal type:', event.type);
    },
  }}
>
  { /* ... */ }
</OTSession>

Você também pode monitorar apenas sinais definidos como um tipo específico. (Opcionalmente, você pode definir o tipo de um sinal ao enviar um sinal.) Registrar um manipulador de eventos para o signal:type evento, substituindo “type” pela string do tipo. Por exemplo, o código a seguir escuta sinais do tipo “foo”:

<OTSession
  apiKey="your-api-key"
  sessionId="your-session-id"
  token="your-session-token"
  eventHandlers={{
    'signal:foo': event => {
      console.log('foo signal received from connection ID:', event.connectionId);
      console.log('signal data:', event.data);
    },
  }}
>
  { /* ... */ }
</OTSession>

Você pode comparar o connectionId propriedade do objeto do evento com o connectionId propriedade do sessionConnected evento disparado pelo objeto Session para verificar se o sinal foi enviado pelo seu cliente ou por outro.

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 connectionId a propriedade do objeto do evento está definida como null.