Señalización — Windows
Utiliza la API de señalización de OpenTok para enviar texto y datos entre los clientes conectados a una sesión de OpenTok.
Para obtener información conceptual sobre la API de señalización de OpenTok, consulta el Resumen sobre la señalización guía del desarrollador.
Este tema incluye las siguientes secciones:
- Envío de una señal a todos los clientes de una sesión
- Enviar una señal a un cliente concreto en una sesión
- Recepción de señales en una sesión
- Evitar que se envíen señales durante la reconexión automática
Enviar una señal a un cliente concreto en una sesión
Para enviar una señal a un cliente concreto en una sesión, llama a la función Session.SendSignal(type, data, connection, retryAfterReconnect) del objeto Session:
Session.SendSignal("chat", "Hello", connection1);
El type El parámetro es un valor de cadena que los clientes pueden utilizar para filtrar cuando estar atento a las señales. Establece este valor en una cadena vacía si no necesitas especificar un tipo.
El data El parámetro es la carga útil de datos (una cadena) que se envía junto con el mensaje. El límite de tamaño de los datos es de 8 KB.
El connection El parámetro es un objeto `Connection` correspondiente a un cliente conectado a la sesión a la que se desea enviar la señal. Las referencias a los objetos `Connection` se obtienen en el Connection propiedad del ConnectionEventArgs objeto utilizado por el ConnectionCreated evento enviado por el objeto Session.
El retryAfterReconnect El parámetro es un parámetro opcional que determina si la señal se enviará tras una reconexión automática. Véase Evitar que se envíen señales durante la reconexión automática.
Envío de una señal a todos los clientes de una sesión
Para enviar una señal a todos los clientes de una sesión, llama a la función Session.SendSignal() método y dejar el connection parámetro no definido (el valor por defecto es null):
session.SendSignal("chat", "Hello");
El primer parámetro, type, es un valor de cadena que los clientes pueden utilizar como criterio de filtrado cuando estar atento a las señales. Establece este valor en una cadena vacía si no necesitas especificar un tipo.
El segundo parámetro, signal, es la carga útil de datos (una cadena) que se envía junto con el mensaje. El límite de tamaño de los datos es de 8 KB.
Recepción de señales en una sesión
Para empezar a recibir señales, añade un delegado para el Signal del 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);
}
El método delegado se invoca cuando se recibe una señal en la sesión.
Puedes comprobar si se ha recibido la señal de tu cliente comparando el .
@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
}
}
Ten en cuenta que puedes utilizar un Llamada a la API REST para enviar una señal desde tu servidor, en lugar de desde un cliente conectado a la sesión. En este caso, el Connection La propiedad del objeto SignalEventArgs se establece en null.
Evitar que se envíen señales durante la reconexión automática
Los clientes intentarán volver a conectarse automáticamente a una sesión de la que se hayan desconectado de forma inesperada (por ejemplo, debido a una interrupción de la conexión de red). De forma predeterminada, cualquier señal que envíes mientras el cliente esté temporalmente desconectado de una sesión se pone en cola y se envía cuando (y si) se vuelve a conectar con éxito. Puedes configurar el retryAfterReconnect) del Session.SendSignal() método para false para evitar que las señales se acumulen en la cola mientras el cliente está desconectado. Para obtener más información, consulta Reconexión automática.