Guia de transição do Vonage Video para Java
A transição de com.tokbox:opentok-server-sdk para com.vonage:server-sdk.
Introdução
Objetivo
O objetivo deste documento é fornecer um ponto de partida para a transição do SDK do servidor Java da OpenTok para o SDK do servidor Java da Vonage.
Âmbito
Este documento pressupõe que você esteja usando, no mínimo, a versão 4.0.0 ou posterior do SDK do OpenTok para Java. A Video API foi adicionada ao Java Server SDK na versão 8.0.0. Você deve usar a versão mais recente do SDK Java da Vonage, que pode ser encontrada em GitHub ou Maven Central.
Suposições
Este guia destina-se a ser seguido por um engenheiro de software profissional. Presume-se que o leitor possua, no mínimo, um nível básico de conhecimento em Java, nas ferramentas comuns de desenvolvimento Java, em sistemas de compilação (Maven ou Gradle) e no Git (ou outro sistema de controle de versão). Você deve estar à vontade para ler e escrever código Java, gerenciar dependências de projeto, implantar e executar um projeto Java. Uma introdução à linguagem Java, à plataforma e às ferramentas associadas está bem além do escopo deste documento.
Recursos
Os links a seguir são úteis para leituras complementares a este documento e como referência para qualquer assunto não abordado neste documento:
Vonage
- Documentação do Vonage Video
- Especificação da Video API da Vonage
- Guia de uso em vídeo do SDK do servidor Java da Vonage
- Javadocs da Video API do SDK do servidor Java da Vonage
- Código-fonte do vídeo do SDK do servidor Java da Vonage
- Repositório do SDK do servidor Java da Vonage no GitHub
- Artefatos do SDK do servidor Java da Vonage publicados no Maven Central
TokBox
- Referência da API REST do OpenTok
- Documentação do SDK do servidor Java do OpenTok
- Código-fonte do SDK do servidor Java do OpenTok
- Repositório do OpenTok Java Server SDK no GitHub
- Artefatos do OpenTok Java Server SDK publicados no Maven Central
Planejando sua migração
Antes de fazer a transição do OpenTok para o Vonage Video, é importante levar em conta a magnitude da tarefa para definir expectativas realistas.
Avaliar o impacto
A primeira pergunta a ser respondida é: qual a proporção do código do seu aplicativo que depende do SDK do OpenTok? Faça uma lista de todos os arquivos nos quais o SDK é usado diretamente. Ou seja, qualquer arquivo-fonte Java que contenha importações do com.opentok pacote. Você pode procurar nos arquivos do seu projeto pela instrução import com.opentok usando um IDE ou uma ferramenta de linha de comando para identificar os arquivos afetados.
Linha do tempo
Leve em consideração o tempo necessário para concluir a transição. Isso 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 o OpenTok e o Vonage Video. O tempo necessário para concluir a transição é aproximadamente proporcional ao número de locais em que o SDK do OpenTok é utilizado em seu código, bem como à variedade de recursos utilizados. Algumas chamadas de API serão mais simples de substituir do que outras.
Controle de versões
O ideal é criar um novo branch no seu sistema de controle de versão para a transição, de modo que você possa fazer alterações gradualmente e com frequência sem afetar o projeto existente. Você também pode usar os testes do projeto existente como referência para verificar a correção. O ideal é só mesclar o branch de transição ao branch principal depois de concluir a conversão.
Principais mudanças e considerações
Novos recursos e normas
A Video API da Vonage possui paridade de recursos com a OpenTok, e o SDK para Java é mantido ativamente para estar em conformidade com a especificação da API. Uma das diferenças entre os SDKs Java do OpenTok e da Vonage é que o SDK Java utiliza um modelo de dados com tipagem mais forte, em vez de simples strings. Ele também apresenta maior consistência com outras APIs do SDK e segue convenções que devem tornar o uso do SDK intuitivo. Outra diferença importante é que as classes de solicitação e resposta são unificadas. Por exemplo, você usaria a Archive classe tanto para criar quanto para recuperar um arquivo, enquanto no OpenTok você usaria ArchiveProperties para a solicitação e Archive para a resposta. Assim como o SDK do OpenTok, o SDK do Java utiliza o padrão Builder para construir objetos de solicitação.
Ao contrário do SDK do OpenTok, o SDK da Vonage não utiliza exceções verificadas. Portanto, você não precisa mais fazer um try {...} catch (InvalidArgumentException ex), permitindo que você simplifique seu código. Se você quiser interceptar exceções decorrentes de chamadas de API malsucedidas (ou seja, com código de status diferente de 2xx), você pode interceptar VideoResponseException em vez de OpenTokException.
Atualização de dependências
Primeiramente, você precisará atualizar as dependências do seu sistema de compilação para usar o SDK Java da Vonage em vez do OpenTok. As instruções sobre como fazer isso dependerão do seu sistema de compilação. As instruções sobre como incluir a versão mais recente do SDK Java da Vonage na sua compilação podem ser encontradas em Maven Central ou mvnrepository.com.
Para uma migração gradual, você pode incluir as dependências do OpenTok e do Vonage em seu projeto; no entanto, recomendamos enfaticamente que isso seja feito apenas para fins de teste, e não para implantações em produção, pois o SDK do OpenTok tende a utilizar versões mais antigas das dependências, o que pode causar problemas durante a execução.
Nome do pacote
Depois de adicionar o SDK Java da Vonage ao seu classpath usando sua ferramenta de compilação, você poderá começar a utilizá-lo em seu código.
Você pode substituir as importações do com.opentok e com.opentok.exception pacotes com com.vonage.client.video. Uma operação de “Localizar e Substituir” no seu IDE ou editor de código deve ajudar bastante a resolver a maioria dos erros de compilação.
Observe que não há outros subpacotes para exceções — a única exceção que você precisará interceptar para lidar com erros da API é com.vonage.client.video.VideoResponseException.
Alterações na autenticação
A autenticação nos SDKs de servidor Java do OpenTok e do Vonage é gerenciada automaticamente para você; portanto, basta fornecer as credenciais da sua conta uma única vez, durante a inicialização. A diferença é que o OpenTok exige uma chave e um segredo de API, enquanto que, para a Video API no SDK Java da Vonage, 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 OpenTok, isso é utilizado para outras APIs da Vonage, e não para vídeo. Portanto, você precisará criar uma Application ou usar uma 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 daí, clique em “Gerar chave pública e privada”. Isso só deve ser feito uma vez, pois, a cada vez que você fizer isso, as credenciais serão alteradas, o que invalidará o par de chaves existente. Ao clicar aqui, será iniciado o download da sua chave privada. Você deve armazenar esse arquivo em um local seguro para fins de teste. NUNCA COMPARTILHE OU DIVULGUE SUA CHAVE PRIVADA! A chave privada é, na verdade, a “senha” do seu aplicativo; portanto, deve ser tratada com cuidado. Recomenda-se que você crie uma variável de ambiente que aponte para o caminho do arquivo da sua chave privada, para que possa consultá-la ao configurar o VonageClient, nomeando a variável algo como VONAGE_PRIVATE_KEY_PATH. O mesmo deve ser feito com o ID do seu aplicativo (que pode ser encontrado no painel ou na URL ao editá-lo).
Para obter mais orientações sobre como configurar um aplicativo, consulte o guia de introdução.
Uso
Veja O arquivo README do SDK do Java para obter instruções de configuração.
Em vez disso:
OpenTok videoClient = new OpenTok.Builder(apiKey, apiSecret).build();
Faça o seguinte:
import com.vonage.client.video.*;
import com.vonage.client.VonageClient;
// Inside a constructor or method body:
VonageClient vonage = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();
VideoClient videoClient = vonage.getVideoClient();
Depois de instanciar o VonageClient, você pode usar o Video API usando o VideoClient, conforme obtido a partir do VonageClient (veja acima).
Os métodos da API em VideoClient estão documentados no Javadocs e são, em linhas gerais, análogos aos métodos encontrados no OpenTok classe.
Para obter instruções de uso mais detalhadas, consulte o Guia em vídeo do Java Server SDK.
Alterações no método
Há algumas pequenas alterações que você deve levar em conta ao migrar do OpenTok para o Vonage. Muitas delas são simples e seu IDE irá ajudá-lo com o preenchimento automático, mas, para maior clareza, considere o seguinte:
projectIdagora éapplicationIdquando for o caso.- Utilização de tipagem mais forte sempre que aplicável (por exemplo,
UUIDeURIem vez deString). playDTMFrenomeado parasendDtmfpara todos os terminais DTMF aplicáveis.OpenTok#disableForceMute(String)substituído porVideoClient#muteSession(String, boolean, String...). Você precisa definir oactiveparâmetro booleano parafalsepara obter o mesmo efeito.- O
MuteAllPropertiesclasse e parâmetro emOpenTokfoi substituído pelo uso doexcludedStreamIdsdiretamente no parâmetro do método deVideoClient#muteSession(String, boolean, Collection<String>)(ouVideoClient#muteSession(String, boolean, String...) for convenience). Esses métodos substituemOpenTok#forceMuteAll(String, MuteAllProperties). ArchivePropertieseBroadcastProperties- conforme utilizados nos parâmetros de solicitação no OpenTok - foram substituídos porArchiveeBroadcastrespectivamente. Ambos utilizam o padrão builder para sua construção.ArchiveeBroadcastNa Vonage, as respostas também são apresentadas de maneira semelhante às do OpenTok.- Assim, os objetos de solicitação e resposta que representam
ArchiveeBroadcastforam unificados na implementação da Vonage.
OpenTok#setBroadcastLayout(String, BroadcastProperties)substituído porVideoClient#updateBroadcastLayout(String, StreamCompositionLayout).OpenTok#setArchiveLayout(String, ArchiveProperties)substituído porVideoClient#updateArchiveLayout(String, StreamCompositionLayout).OpenTok#dial(String, String, SipProperties)substituído porVideoClient#sipDial(SipDialRequest).Sipsubstituído porSipResponse.
- O
listArchivesOs métodos com vários parâmetros no OpenTok foram substituídos porVideoClient#listArchives(ListStreamCompositionsRequest)para controlar as opções.- A resposta é um simples
List<Archive>em vez deArchiveList. UsarCollection#size()em vez deArchiveList#getTotalCount()para obter o número de elementos.
- A resposta é um simples
OpenTok#setStreamLayouts(String, StreamListProperties)substituído porVideoClient#setStreamLayout(String, List<SessionStream>)(ouVideoClient#setStreamLayout(String, SessionStream...)(por uma questão de praticidade).OpenTok#signal(String, String, SignalProperties)eOpenTok#signal(String, SignalProperties)substituído porVideoClient#signal(String, String, SignalRequest)eVideoClient#signalAll(String, SignalRequest), respectivamente.- A estrutura dos tokens obtidos utilizou o
generateTokenmétodos emOpenTokeVideoClientsão diferentes. A Vonage usa JWTs, enquanto a OpenTok usa uma solução personalizada. OpenTok#startCaptions(String, String, CaptionProperties)substituído porVideoClient#startCaptions(CaptionsRequest).CaptionPropertiessubstituído porCaptionsRequest.Captionsubstituído porCaptionsResponse.CaptionsRequestusa uma enumeração para olanguageCodeem vez de uma string simples.- O
tokenesessionIdainda são necessários e estão definidos noCaptionsRequest.Builderobjeto.
OpenTok#connectAudioStream(String, String, AudioConnectorProperties)substituído porVideoClient#connectToWebsocket(ConnectRequest).AudioConnectorPropertiessubstituído porConnectRequest.AudioConnectorsubstituído porConnectResponse.
OpenTok#startRender(String, String, RenderProperties)substituído porVideoClient#startRender(RenderRequest).RenderPropertiessubstituído porRenderRequest.nameparâmetro no internoPropertiesa classe está definida no nível superiorRenderRequest.Builder.
Rendersubstituído porRenderResponse.resolutionagora é uma enumeração, em vez de uma string simples.
OpenTok#listRenders(Integer, Integer)substituído porVideoClient#listRenders(ListStreamCompositionsRequest).- Isso funciona de maneira semelhante à versão atualizada
listBroadcastselistArchivesmétodos (ver acima).
- Isso funciona de maneira semelhante à versão atualizada
Recomendações para testes
Testes minuciosos são essenciais para uma transição tranquila, tanto durante quanto após a migração. Isso inclui não apenas testes de unidade, 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 esperado 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 do seu aplicativo funcionam da mesma maneira. Esses testes podem ser descartados assim que a transição estiver concluída e a versão OpenTok do seu aplicativo for removida.
Solução de problemas e suporte
O SDK do Servidor Java da Vonage se empenha em fornecer mensagens de exceção úteis nos rastreamentos de pilha, caso você encontre erros de tempo de execução. Analise-as cuidadosamente para determinar a causa.
Canais de suporte
Para obter ajuda geral e participar de discussões sobre a migração para o Vonage Video, acesse 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. Se você encontrar um bug no SDK, por favor, abrir um ticket no GitHub com os passos para reproduzir o problema.