Guía de transición de Vonage Video para Node

Transición de opentok a @vonage/video o @vonage/server-sdk

Introducción

Propósito

El SDK de OpenTok para Node se encuentra en modo de mantenimiento, ya que hemos pasado a utilizar un nuevo SDK de vídeo en el que se pueden utilizar las credenciales de Vonage en nuestro SDK para Node en todas las API.

Ámbito de aplicación

Para mantener el @vonage/server-sdk Para que el paquete fuera lo más pequeño posible, el SDK de Node se dividió en módulos más pequeños. Esto significa que puedes instalar solo el @vonage/video en tu proyecto, en lugar de todo el SDK. Sea cual sea la opción que elijas, solo LTS versiones de NodeJS (en el momento de escribir estas líneas, la versión mínima es la 18). El SDK puede admitir módulos ESM y CJS Node.

A efectos de este documento, todos los ejemplos se realizarán utilizando el SDK completo como módulo CJS. async/await también se utilizará, ya que es menos prolijo que utilizar promises. Ten en cuenta que async/await es sólo azúcar sintáctico alrededor de las promesas. No hay ninguna diferencia en la funcionalidad. Este documento también utilizará el último soporte de ECMAScript para const y let así como utilizar funciones de "flecha gorda".

El NodeSDK está escrito en Typescript sin embargo no es un requisito. Typescript proporciona archivos de definición para su IDE respetado para mostrar correctamente el uso.

Supuestos

Para migrar de OpenTok al SDK de Node, necesitará saber cómo funcionan las promesas (o async/await) funcionan. Las funciones de devolución de llamada ya no son compatibles.

Recursos

Código fuente del SDK de vídeo de Vonage Documentación de la Video API de Vonage Especificaciones de la API de Video de Vonage

Planificación de la migración

Evaluar el impacto

El SDK de OpenTok se ha desarrollado utilizando callbacks. Esto significa que la migración requerirá cambios importantes en tu proyecto. Dependiendo de cómo hayas estructurado tus funciones, esto podría resultar complicado. Por ejemplo, veamos cómo se crea una sesión

Para el SDK nodo es tan simple como:

try {
    const session = await vonage.video.createSession(
        {} // session options
    );
    console.log(session.sessionId);
} catch (err) {
    console.error(err);
}

Mientras que en el pasado, esto requería devoluciones de llamada para realizar la misma tarea:

OT.createSession(
    {}, // session options
    function (err, session) {
        if (err) {
            console.error(err)
            return;
        }
        
        console.log(session.sessionId);
    }
);

Como puedes ver, se trata de un cambio de paradigma importante en el diseño del funcionamiento de tu proyecto. Si tu proyecto depende de otro paquete que no es compatible con promises, puedes utilizar Promise.resolve para forzar la resolución de la promesa. Sin embargo, esto podría suponer un de rendimiento, ya que la aplicación tendrá que esperar a que el SDK complete la llamada a la API antes de poder continuar. antes de poder continuar.

Si de ninguna manera puedes pasarte a async/await, no podrás realizar la migración.

Cronología

Account the time required to complete the transition. Esto dependerá dependerá de tu experiencia con el proyecto y su impacto, así como de las pruebas. Es crucial contar con un buen conjunto de pruebas para poder verificar la equivalencia entre los SDK de OpenTok y Vonage Video. equivalencia entre los SDK de OpenTok y Vonage Video. El tiempo que llevará para completar la transición es aproximadamente proporcional al número de lugares donde el SDK OpenTok se utiliza en su código, así como la variedad de características utilizadas. Algunas llamadas API serán más simples de reemplazar que otras.

Actualización del paquete

Para actualizar el paquete de vídeo, puede instalar utilizando npm o yarn así:

npm install @vonage/server-sdk
yarn install @vonage/server-sdk

Si desea instalar el módulo independiente (los usuarios de Typescript también necesitarán importar @vonage/auth para crear el cliente de vídeo):

npm install @vonage/video
yarn install @vonage/video

Cambios en la autenticación

La autenticación, tanto en OpenTok como en los SDK de Node, se gestiona automáticamente, por lo que solo tienes que introducir las credenciales de tu Account una vez, durante la inicialización. La diferencia es que OpenTok requiere una clave y un secreto de API, mientras que para la Video API del SDK de Node hay que proporcionar un ID de aplicación y su clave privada. Aunque tanto Vonage como OpenTok utilizan la autenticación basada en tokens, los tokens de Vonage son JWT mientras que OpenTok utiliza un formato personalizado. Aunque puede proporcionar una clave de API y un secreto a la aplicación VonageClient Al igual que con OpenTok, esto se utiliza para otras API de Vonage, no para vídeo. Por lo tanto, tendrás que crear una aplicación o utilizar una ya existente.

Puedes crear una aplicación desde el Panel de Vonage. Asegúrese de que su aplicación tiene activada la función de vídeo. Haz clic en «Editar» junto a una aplicación existente para ver sus capacidades y credenciales. Desde aquí, haz clic en «Generar clave pública y privada». Esto solo debe hacerse una vez, ya que cada vez que lo hagas, las credenciales cambiarán y, por lo tanto, se invalidará el par de claves existente. Al hacer clic aquí, se iniciará la descarga de tu clave privada. Debes guardar este archivo en un lugar seguro para realizar las pruebas. NUNCA COMPARTA O EXPONGA SU CLAVE PRIVADA. La clave privada es efectivamente la "contraseña" de su aplicación, por lo que debe tratarse con cuidado.

Para obtener más información sobre cómo configurar una aplicación, consulta la guía de introducción.

Una vez que hayas creado la aplicación y descargado la clave privada, debes introducir esa información en el cliente:

const { Vonage } = require('@vonage/server-sdk')

const vonage = new Vonage({
  appId: 'Your application id',
  privateKey: 'Your private key',
});

Estrategias de migración

Pasar de las funciones de devolución de llamada a las promesas no es tarea fácil. Es muy probable que todo tu proyecto utilice funciones de devolución de llamada. Es posible que también estés utilizando paquetes de terceros que, a su vez, estén escritos con funciones de devolución de llamada. Lo mejor es que vayas tratando cada llamada a la API de una en una.

Tenga en cuenta que el uso del util.promisify utilidad, puede que no siempre funcione. Hay algunos callback que devuelven múltiples parámetros que util.promisify es incapaz de manejar.

Métodos modificados

Método OpenTok Método Vonage Notas
createSession() createSession() El mediaMode opción está actualmente "activada" o "desactivada".
generateToken() generateClientToken() Se ha cambiado el nombre de este método para reflejar mejor su función
listArchives() searchArchives() Se ha cambiado el nombre de este método para reflejar mejor lo que hace. La paginación automática no está activada
setArchiveLayout() updateArchiveLayout() Se ha cambiado el nombre de este método para reflejar mejor su función. Los múltiples parámetros del diseño se han sustituido por un único argumento que toma un ArchiveLayout
signal() sendSignal() Se ha cambiado el nombre de este método para reflejar mejor su función
forceDisconnect() disconnectClient() Se ha cambiado el nombre de este método para reflejar mejor su función
getStream() getStreamInfo() Se ha cambiado el nombre de este método para reflejar mejor su función
listStreams() getStreamInfo() Este método se ha suprimido, getStreamInfo() devolverá todos los flujos si no se proporciona ninguno como segundo argumento

Recomendaciones para las pruebas

La realización de pruebas exhaustivas es esencial para una transición fluida, tanto durante como después de la migración. de la migración. Esto incluye no sólo pruebas unitarias, sino también pruebas de integración y de regresión. integración y regresión. También merece la pena probar manualmente el flujo de la aplicación al menos una vez antes y después de la migración para garantizar que las pruebas automatizadas se realizan correctamente. una vez antes y después de la migración para asegurarse de que las pruebas automatizadas automatizadas hacen lo que usted cree que hacen, o para detectar problemas que las pruebas no hayan detectado. hayan detectado. Incluso puede plantearse crear pruebas de equivalencia. La idea es crear un conjunto que afirme que las versiones de OpenTok y Vonage Video de tu aplicación hacen lo mismo. Estas pruebas se pueden descartar una vez transición y se elimine la versión OpenTok de tu aplicación.

Canales de asistencia

Si necesitas ayuda general o quieres participar en debates sobre la transición a Vonage Video, echa un vistazo a el Canal #Video API en nuestro Slack de la comunidad, donde podrás obtener respuestas del personal de Vonage y de otros usuarios.

También puede ponerse en contacto con nosotros en X @VonageDev.

El contacto principal para cualquier problema con la propia Video API es support@api.vonage.com.

Asistencia directa a través de Slack: Slack para desarrolladores de Vonage

Si encuentra un error en el SDK, cree un ticket en Presentar un problema con los pasos para reproducir en Github

Por último, el módulo de vídeo cuenta con documentación autogenerada alojada en el archivo wiki del repositorio de GitHub.