Guia de transição do Vonage Video para o Node

A transição de opentok para @vonage/video ou @vonage/server-sdk

Introdução

Objetivo

O SDK do OpenTok para Node está em modo de manutenção, pois fizemos a transição para um novo SDK de vídeo, no qual as credenciais da Vonage podem ser utilizadas em nosso SDK para Node em todas as APIs.

Âmbito

Para manter o @vonage/server-sdk Para tornar o pacote o menor possível, o SDK do Node foi dividido em módulos menores. Isso significa que você pode instalar apenas o @vonage/video no seu projeto, em vez de todo o SDK. Seja qual for a opção escolhida, apenas LTS versões do Node.js serão compatíveis (no momento da redação deste artigo, a versão mínima é a 18). O SDK também oferece suporte a módulos Node.js tanto no formato ESM quanto no CJS.

Para os fins deste documento, todos os exemplos serão apresentados utilizando o SDK completo como um módulo CJS. async/await também será usado, pois é mais conciso do que usar promises. Lembre-se de que async/await é apenas um recurso sintático em torno das promessas. Não há diferença em termos de funcionalidade. Este documento também utilizará o suporte mais recente do ECMAScript para const e let além de utilizar funções “fat-arrow”.

O NodeSDK foi escrito em Typescript, mas isso não é um requisito. O Typescript fornece arquivos de definição para que seu IDE exiba corretamente as instruções de uso.

Suposições

Para migrar do OpenTok para o Node SDK, você precisará saber como funcionam as promessas (ou async/await) funcionam. Os callbacks não são mais suportados.

Recursos

Código-fonte do SDK de vídeo da Vonage Documentação da Video API da Vonage Especificações da Video API da Vonage

Planejando sua migração

Avaliar o impacto

O SDK do OpenTok foi desenvolvido utilizando callbacks. Isso significa que a migração exigirá mudanças significativas em seu projeto. Dependendo de como você estruturou suas funções, isso pode se tornar um desafio. Tomemos, por exemplo, a criação de uma sessão

Para o SDK do node, é tão simples quanto:

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

Enquanto, no passado, isso exigia o uso de callbacks para realizar a mesma tarefa:

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

Como você pode ver, trata-se de uma grande mudança de paradigma no design, que afeta o funcionamento do seu projeto. Se o seu projeto depende de outro pacote que não oferece suporte a promises, você pode usar Promise.resolve para forçar a resolução da promessa. No entanto, isso pode acarretar algum custo de desempenho, já que o aplicativo terá que aguardar que o SDK conclua a chamada à API antes de poder continuar.

Se você realmente não puder converter para async/await, você não poderá realizar a migração.

Linha do tempo

Leve em consideração o tempo necessário para concluir a transição. Isso vai depender da sua experiência com o projeto e do impacto dele, bem como dos testes. É fundamental contar com um bom conjunto de testes para que você possa verificar a equivalência entre os SDKs de vídeo do OpenTok e da Vonage. O tempo necessário para concluir a transição é aproximadamente proporcional ao número de locais em que o SDK do OpenTok é usado em seu código, bem como à variedade de recursos utilizados. Algumas chamadas de API serão mais simples de substituir do que outras.

Atualização do pacote

Para atualizar o pacote de vídeos, você pode fazer a instalação usando npm ou yarn assim:

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

Se você quiser instalar o módulo independente (os usuários do Typescript também precisarão importar @vonage/auth para criar o cliente de vídeo):

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

Alterações na autenticação

A autenticação, tanto no OpenTok quanto no Node SDK, é feita automaticamente para você, portanto, basta fornecer as credenciais da sua conta uma única vez, na inicialização. A diferença é que o OpenTok exige uma chave e um segredo de API, enquanto que, para a Video API no SDK do Node, você precisa fornecer um ID de aplicativo e sua chave privada. Embora tanto a Vonage quanto o OpenTok utilizem autenticação baseada em tokens, os tokens da Vonage são JWTs enquanto o OpenTok utiliza um formato personalizado. Embora seja possível fornecer uma chave de API e um segredo ao VonageClient Assim como no caso do OpenTok, isso é utilizado para outras APIs da Vonage, e não para vídeo. Portanto, você precisará criar um aplicativo ou usar um já existente.

Você pode criar um aplicativo a partir do Painel do Vonage. Certifique-se de que o recurso de vídeo esteja ativado no seu aplicativo. Clique em “Editar” em uma aplicação existente para visualizar seus recursos e credenciais. A partir daqui, clique em “Gerar chave pública e privada”. Isso só deve ser feito uma vez, pois cada vez que você fizer isso, as credenciais serão alteradas, o que invalidará o par de chaves existente. Ao clicar nessa opção, será iniciado o download da sua chave privada. Você deve armazenar esse arquivo em um local seguro para fins de teste. NUNCA COMPARTILHE NEM REVELE SUA CHAVE PRIVADA! A chave privada é, na verdade, a “senha” do seu aplicativo; portanto, deve ser tratada com cuidado.

Para obter mais orientações sobre como configurar um aplicativo, consulte o guia de introdução.

Depois de criar o aplicativo e baixar a chave privada, você deve passar essas informações para o cliente:

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

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

Estratégias de migração

Migrar de callbacks para promises não é tarefa fácil. É provável que todo o seu projeto utilize callbacks. Você também pode estar usando pacotes de terceiros que foram escritos com base em callbacks. O melhor é abordar cada chamada de API, uma de cada vez.

Observe que o uso do recurso integrado util.promisify utilitário, pode nem sempre funcionar. Existem algumas funções de retorno que retornam vários parâmetros, o que util.promisify não consegue lidar.

Métodos alterados

Método OpenTok Método Vonage Notas
createSession() createSession() O mediaMode a opção está atualmente “ativada” ou “desativada”
generateToken() generateClientToken() Esse método foi renomeado para refletir melhor sua função
listArchives() searchArchives() Esse método foi renomeado para refletir melhor sua função. A paginação automática não está ativada
setArchiveLayout() updateArchiveLayout() Esse método foi renomeado para refletir melhor sua função. Os diversos parâmetros de layout foram substituídos por um único argumento que recebe um ArchiveLayout
signal() sendSignal() Esse método foi renomeado para refletir melhor sua função
forceDisconnect() disconnectClient() Esse método foi renomeado para refletir melhor sua função
getStream() getStreamInfo() Esse método foi renomeado para refletir melhor sua função
listStreams() getStreamInfo() Esse método foi removido, getStreamInfo() retornará todos os fluxos caso nenhum seja fornecido como segundo argumento

Recomendações para testes

Testes completos são essenciais para uma transição tranquila, tanto durante quanto após a migração. Isso inclui não apenas testes unitários, mas também testes de integração e de regressão. Também vale a pena testar manualmente o fluxo do seu aplicativo pelo menos uma vez antes e depois da migração para garantir que seus testes automatizados funcionem como você espera, ou para identificar quaisquer problemas que os testes possam não ter detectado. Você pode até considerar a criação de testes de equivalência. A ideia é criar um conjunto de testes que comprove que tanto a versão OpenTok quanto a versão Vonage Video da sua aplicação funcionam da mesma maneira. Esses testes podem então ser descartados assim que a transição estiver concluída e a versão OpenTok da sua aplicação for removida.

Canais de suporte

Para obter ajuda geral e participar de discussões sobre a migração para o Vonage Video, confira o Canal #Video API no nosso Slack da Comunidade, onde você pode obter respostas da equipe da Vonage e de outros usuários.

Você também pode entrar em contato conosco no X @VonageDev.

O principal ponto de contato para quaisquer questões relacionadas à própria Video API é support@api.vonage.com.

Suporte direto pelo Slack: Slack dos desenvolvedores da Vonage

Se você encontrar um bug no SDK, abra um ticket em abrir um ticket no GitHub com os passos para reproduzir o problema

Por fim, o módulo de vídeo possui documentação gerada automaticamente, hospedada no wiki seção do repositório do GitHub.