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í:
Si desea instalar el módulo independiente (los usuarios de Typescript también necesitarán
importar @vonage/auth para crear el videocliente):
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.