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í:
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):
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.