Sinalização — Windows
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 todos os clientes em uma sessão
- Envio de um sinal para um cliente específico em uma sessão
- Recebimento de sinais em uma sessão
- Impedir que sinais sejam enviados durante a reconexão automática
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 Session.SendSignal(type, data, connection, retryAfterReconnect) método do objeto Session:
Session.SendSignal("chat", "Hello", connection1);
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 objeto Connection correspondente a um cliente conectado à sessão à qual você deseja enviar o sinal. Você obtém referências a objetos Connection no Connection propriedade do ConnectionEventArgs objeto utilizado pelo ConnectionCreated evento enviado pelo objeto Session.
O retryAfterReconnect O parâmetro é um parâmetro opcional que determina se o sinal será enviado após uma reconexão automática. Consulte Impedir que sinais sejam enviados durante a reconexão automática.
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 Session.SendSignal() método e deixar o connection parâmetro não definido (o valor padrão é null):
session.SendSignal("chat", "Hello");
O primeiro parâmetro, type, é um valor de cadeia de caracteres que os clientes podem usar como critério de filtragem quando ficar atento aos sinais. Defina esse valor como uma string vazia caso não seja necessário definir um tipo.
O segundo parâmetro, signal, é a carga útil de dados (uma sequência de caracteres) que você envia junto com a mensagem. O limite de tamanho dos dados é de 8 KB.
Recebimento de sinais em uma sessão
Para começar a receber sinais, adicione um delegado para o Signal método do objeto Session:
session.Signal += Session_Signal;
private void Session_Signal(object sender, SignalEventArgs e)
{
Console.WriteLine("Session received signal. ");
Console.WriteLine("Data:" + e.Data);
Console.WriteLine("Type:" + e.Type);
Console.WriteLine("From connection with ID:" + e.Connection.Id);
}
O método delegado é chamado quando um sinal é recebido na sessão.
Você pode verificar se o sinal foi recebido pelo seu cliente comparando o .
@Override
private void Session_Signal(object sender, SignalEventArgs e)
{
String myConnectionId = session.Connection.ID;
if (e.Connection != null && e.Connection.ID != 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 a propriedade do objeto SignalEventArgs está definida 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 definir o retryAfterReconnect) parâmetro do Session.SendSignal() método 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.