Gestión de excepciones

Una de las mejores prácticas a la hora de programar es escribir código que asuma y prevea que las cosas pueden salir mal. Por ejemplo, un cliente puede no estar conectado a Internet cuando intenta conectarse a una sesión.

La biblioteca OpenTok.js incluye controladores de finalización y eventos de excepción que detectan las excepciones en tiempo de ejecución.

Este tema incluye las siguientes secciones:

Gestores de finalización

Para muchos métodos que se completan de forma asíncrona, el último parámetro que se pasa es una función de control de finalización. Esta función es llamada cuando el método se completa o falla. Si falla, se pasa a la función un objeto de error como parámetro.

Por ejemplo, el siguiente código llama a la función Session.connect() método, pasando un controlador de finalización:

var session = OT.initSession(apiKey, session);
session.connect(token, function (error) {
  if (error) {
    console.log("Failed to connect: ", error.message);
    if (error.name === "OT_NOT_CONNECTED") {
      alert("You are not connected to the internet. Check your network connection.");
    }
  } else {
    console.log("Connected");
  }
});

Es importante implementar manejadores de finalización para ver cuando un método tiene éxito o falla. En algunos casos, puedes preguntar al usuario si existe una condición de cliente que haya causado el error. Por ejemplo, si el método error.name La propiedad se establece en «OT_NOT_CONNECTED» al llamar a la Session.connect() falla, esto indica que el cliente no está conectado a la red.

En el caso de otros errores que no sean culpa del cliente, puedes consultar el código y el mensaje de error para determinar la naturaleza del mismo. Por ejemplo, al llamar a la función Session.connect() un código de error 1004 indica que ha intentado conectarse con un token no válido. Podría tratarse de un token caducado o que no coincide con la sesión a la que se está conectando. Compruebe la propiedad message del objeto de error para más detalles.

Métodos con controladores de finalización

Los siguientes métodos del SDK de JavaScript de OpenTok incluyen un completionHandler parámetro. Para este parámetro opcional, puedes pasar una función que se ejecutará cuando el método tenga éxito o falle:

  • Session.forceDisconnect()
  • Session.forceUnpublish()
  • Session.connect()
  • Session.publish()
  • Session.signal()
  • Session.subscribe()
  • OT.initPublisher()

Compruebe el message para obtener más detalles sobre el error.

En caso de error, el code valor del error puede tener uno de los siguientes valores:

Errores al llamar a Session.connect():
code Descripción
1004 Error de autenticación. Compruebe el mensaje de error para obtener más detalles. Este error puede producirse si introduce un token caducado al intentar conectarse a una sesión. También puede producirse si se introduce un token o una clave de API no válidos. Asegúrese de que está generando el token utilizando la versión actual de uno de los protocolos SDK de servidor de OpenTok.
1005 ID de sesión no válido. Asegúrate de generar el ID de sesión utilizando la versión actual de uno de los SDK de servidor de OpenTok.
1006 Conexión fallida. No se ha podido conectar a la sesión. Es posible que desee que el cliente compruebe la conexión de red.
Errores al llamar a Session.forceDisconnect():
code Descripción
1520 No se puede forzar la desconexión. El token del cliente no tiene asignado el rol de moderador. Una vez que el cliente se haya conectado a la sesión, el capabilities La propiedad del objeto Session enumera las capacidades del cliente.
Errores al llamar a Session.forceUnpublish():
code Descripción
1530 No se puede forzar la retirada de la publicación. El token del cliente no tiene asignado el rol de moderador. Una vez que el cliente se haya conectado a la sesión, el capabilities La propiedad del objeto Session enumera las capacidades del cliente.
1535 Forzar la retirada de la publicación en un flujo no válido. Asegúrate de que el flujo no haya salido de la sesión antes de llamar a la función forceUnpublish() método.
Errores al llamar a Session.publish():
code Descripción
1010 No se puede publicar: el cliente no está conectado a la sesión de OpenTok. Comprueba que tu aplicación haga que el cliente se conecte correctamente antes de intentar publicar. Además, comprueba que el cliente no se haya desconectado antes de intentar publicar.
1500 No se puede publicar. El token del cliente no tiene asignado el rol de «publicar» ni el de «moderador». Una vez que el cliente se haya conectado a la sesión, el capabilities La propiedad del objeto Session enumera las capacidades del cliente.
1601 Error interno -- Error del editor WebRTC. Intente volver a publicar o conectarse a la sesión.
Errores al llamar a Session.signal():
code Descripción
1510 No se puede establecer la conexión. Comprueba que el to del parámetro de señal se establece en un objeto Connection válido. Además, asegúrese de que está conectado a la sesión.
Errores al llamar a Session.subscribe():
code Descripción
1600 Error interno -- Error del suscriptor WebRTC. Intente volver a suscribirse al flujo o volver a conectarse a la sesión.
Errores al llamar a OT.initPublisher():
code Descripción
1004 Error de autenticación. Compruebe el mensaje de error para obtener más detalles. Este error puede producirse si introduce un token caducado al intentar conectarse a una sesión. También puede producirse si se introduce un token o una clave de API no válidos. Asegúrese de que está generando el token utilizando la versión actual de uno de los protocolos SDK de servidor de OpenTok.
Errores generales que pueden producirse al llamar a cualquier método:
code Descripción
1011 Parámetro no válido. Comprueba que has pasado valores de parámetro válidos en la llamada al método.
2000 Error interno. Intenta volver a conectarte a la sesión de OpenTok y vuelve a realizar la acción.

Escucha de eventos de excepción

Para detectar todos los eventos de excepción, añada un oyente de eventos para la función exception enviado por el objeto OT. Sin embargo, es más fácil reaccionar a los errores en los manejadores de finalización de métodos específicos.