Señalización
Visión general
La Video API y los SDK de Vonage te permiten enviar y recibir señales. Las señales son texto o datos arbitrarios que se envían en una sesión y que pueden enviarse a un cliente específico o a todos los clientes conectados. Las señales pueden usarse para implementar chat de texto o para activar eventos en una llamada, como levantar la mano.
Puede enviar señales desde la API o desde los SDK de cliente. Esta guía se centrará en el envío y recepción de Señales con la API SDK de cliente de vídeo de Vonage.
Este tutorial repasará:
- Enviar una señal.
- Envío de una Señal a un cliente específico.
- Recepción de señales.
- Impedir el envío de señales durante la reconexión automática.
Antes de empezar
Antes de poder enviar y recibir señales, primero debes tener un cliente conectado a una sesión. Para obtener más información sobre las sesiones y su función en una aplicación de Vonage Video, lee la sección Documentación de las sesiones.
Enviar una señal
Para enviar una Señal, llame al método Señal del objeto Sesión con algunos datos de cadena. Esta señal se enviará a todos los clientes conectados a la sesión. Los datos están limitados a 8 KB por señal.
session.signal({ data: "hello" },
function(error) {
if (error) {
console.log("signal error ("
+ error.name + "): "
+ error.message
);
} else {
console.log("signal sent.");
}
}
);
session.signal({ data: "hello" },
function(error) {
if (error) {
console.log("signal error ("
+ error.name + "): "
+ error.message
);
} else {
console.log("signal sent.");
}
}
);
mSession.sendSignal("", "Hello");
var error: OTError?
session.signal(withType: "", string: "hello", connection: nil, error: &error)
if error {
print("signal error \(error)")
} else {
print("signal sent)
}
OTError* error = nil;
[session signalWithType:@"" string:@"hello" connection:nil error:&error];
if (error) {
NSLog(@"signal error %@", error);
} else {
NSLog(@"signal sent");
}
Session.SendSignal("", "Hello");
otc_session_send_signal(session, "", "Hello");
Compruebe el referencia para su Client SDK para todos los parámetros disponibles.
Enviar una señal a un cliente específico
Para enviar una Señal a un cliente específico, pase un campo to al método de la señal. El valor del parámetro to debe ser un parámetro Conexión que corresponde al cliente al que se quiere enviar la Señal.
session.signal({ to: connection1, data: "hello" },
function(error) {
if (error) {
console.log("signal error ("
+ error.name + "): "
+ error.message
);
} else {
console.log("signal sent.");
}
}
);
session.signal({ to: connection1, data: "hello" },
function(error) {
if (error) {
console.log("signal error ("
+ error.name + "): "
+ error.message
);
} else {
console.log("signal sent.");
}
}
);
mSession.sendSignal("", "Hello", mConnection1);
var error: OTError?
session.signal(withType: "", string: "hello", connection: connection1, error: &error)
if error {
print("signal error \(error)")
} else {
print("signal sent)
}
OTError* error = nil;
[session signalWithType:@"" string:@"hello" connection:_connection1 error:&error];
if (error) {
NSLog(@"signal error %@", error);
} else {
NSLog(@"signal sent");
}
Session.SendSignal("", "Hello", connection1);
otc_session_send_signal_to_connection(session, "", "Hello", connection1);
Recepción de señales
Para empezar a recibir Señales enviadas en una sesión, añada una función de oyente/delegado de eventos para Señales. Al enviar una Señal, también puede especificar una función type que es un String, este tipo se devuelve cuando se recibe una Señal. Sólo en JavaScript y React Native, puedes escuchar eventos de un tipo específico registrando un escuchador de eventos para el parámetro signal:type evento. Por ejemplo, signal:foo escucha señales de tipo "foo".
session.on("signal", function(event) {
console.log("Signal sent from connection " + event.from.id);
// Process the event.data property, if there is any data.
});
session.on("signal", function(event) {
console.log("Signal sent from connection " + event.from.id);
// Process the event.data property, if there is any data.
});
@Override
protected void onSignalReceived(Session session, String type, String data, Connection connection) {
// Signal received from another client
}
func session(_ session: OTSession, receivedSignalType type: String?, from connection: OTConnection?, with string: String?) {
// Signal received from another client
}
- (void)session:(OTSession*)session receivedSignalType:(NSString*)type fromConnection:(OTConnection*)connection withString:(NSString*)string {
// Signal received from another client
}
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);
}
static void on_session_signal_received(otc_session *session,
void *user_data,
const char *type,
const char *signal,
const otc_connection *connection) {
// Signal received from another client
}
Tenga en cuenta que puede enviar Señales desde su servidor, en lugar de desde un cliente conectado a la sesión. En este caso, la propiedad from se establece en null.
Evitar el envío de señales durante la reconexión automática
Los clientes intentarán reconectarse automáticamente a una sesión que desconecten inesperadamente (por ejemplo, debido a una caída en la conectividad de la red). Por defecto, cualquier señal que envíe mientras el cliente está temporalmente desconectado de una sesión se pone en cola y se envía cuando (y si) se reconecta con éxito.
Para detener este comportamiento, cuando envíe una Señal establezca el parámetro retryAfterReconnect a false. Para más información, consulte el Guía del desarrollador de la Reconexión Automática.