Guía de transición de video de Vonage para nodo

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

Introducción

Propósito

El OpenTok Node SDK está en modo de mantenimiento, ya que hemos hecho la transición a un nuevo SDK de video donde las credenciales de Vonage se pueden usar en nuestro SDK de nodo en todas las API.

Alcance

Para mantener la @vonage/server-sdk el SDK de Node en módulos más pequeños. en módulos más pequeños. Esto significa que puedes instalar sólo el @vonage/video en su proyecto en lugar de todo el SDK. Sea cual sea la ruta que elija, sólo 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 ya que es menos verboso que utilizar promises. Tenga 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). Ya no se admiten las devoluciones de llamada.

Recursos

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

Planificación de la migración

Evaluar el impacto

El SDK de OpenTok fue escrito usando callbacks. Esto significa que la migración requerirá cambios significativos en su proyecto. Dependiendo de cómo estructuró sus funciones, esto podría ser un reto. Por ejemplo, veamos la creación de 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 puede ver, se trata de un importante cambio de paradigma en el diseño de cómo funcionará su proyecto. Si su proyecto depende de otro paquete que no soporta promisespuede 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 no puede convertir a async/awaitno podrá migrar.

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 videocliente):

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

Cambios en la autenticación

La autenticación tanto en OpenTok como en Node SDK se gestiona por ti, por lo que sólo tienes que proporcionar las credenciales de tu Account una vez en la inicialización. La diferencia es que OpenTok requiere clave de API y secreto, mientras que para la Video API en Node SDK, es necesario proporcionar un ID de aplicación y su clave privada. Tanto Vonage como OpenTok utilizan autenticación basada en tokens, Los tokens de Vonage son JWTs 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 usa para otras API de Vonage, no para Video. Por lo tanto necesitarás crear o usar una aplicación existente.

Puede crear una aplicación desde la sección Panel de Vonage. Asegúrese de que su aplicación tiene activada la función de vídeo. Haga clic en Editar' en una aplicación existente para ver sus capacidades y credenciales. A continuación, haga clic en "Generar clave pública y privada". Esto sólo debe hacerse una vez, ya que cada vez que lo haga, las credenciales cambiarán y se romperá el par de claves existente. el par de claves existente. Al hacer clic, se descargará tu clave privada. Coloca este archivo en un lugar seguro para realizar 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 más información sobre cómo crear una aplicación, consulte la Guía de introducción.

Una vez creada la aplicación y descargada la clave privada, hay que esa información al cliente:

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

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

Estrategias de migración

Migrar de callback a promises no es tarea fácil. Lo más probable es que proyecto entero esté usando callbacks. También es posible que utilices paquetes de terceros que también utilicen callbacks. Lo mejor es que 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() En mediaMode opción está actualmente "activada" o "desactivada".
generateToken() generateClientToken() Se ha cambiado el nombre de este método para reflejar mejor lo que hace
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 lo que hace. Los múltiples parámetros para el 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 lo que hace
forceDisconnect() disconnectClient() Se ha cambiado el nombre de este método para reflejar mejor lo que hace
getStream() getStreamInfo() Se ha cambiado el nombre de este método para reflejar mejor lo que hace
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 apoyo

Para obtener ayuda general y debatir sobre la transición a Vonage Video, consulta el sitio Canal #video-api en nuestra comunidad Slack, 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.

Soporte directo vía. Slack: Desarrollador de Vonage Slack

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.