As incríveis velocidades alcançadas pelas modernas conexões de Internet de hoje facilitaram a proliferação de aplicativos em tempo real. São aplicativos que funcionam dentro de um prazo que é rápido o suficiente para que o usuário perceba suas respostas como imediatas para todos os propósitos práticos. Portanto, a latência deve estar dentro de segundos ou mesmo frações de segundo.
Até recentemente, desenvolver aplicativos em tempo real era uma dor e exigia um grande esforço de engenharia. Isso porque, para construir qualquer tipo de funcionalidade em tempo real, você precisa estabelecer uma conexão bidirecional entre cliente e servidor para enviar mensagens. PubNub fornece APIs em tempo real e infraestrutura global de mensagens para simplificar a codificação de seus aplicativos em tempo real. Ele utiliza um modelo de publicação/assinatura para transmissão de dados em tempo real e sinalização de dispositivo que permite estabelecer e manter conexões de soquete persistentes para qualquer dispositivo e enviar dados para públicos globais em menos de um quarto de segundo. Você pode publicar mensagens em qualquer canal e os clientes assinantes recebem apenas mensagens associadas a esse canal. A carga útil da mensagem pode conter qualquer tipo de dados JSON, incluindo números, strings, matrizes e objetos.
No artigo de hoje, vamos construir e testar uma função de saudação usando o console PubNub.
Passo a passo
O PubNub possui consoles online para desenvolver e gerenciar todos os componentes de seus projetos e módulos, desde chaves de API até configurações de depuração. Portanto, tudo o que faremos hoje acontecerá no site PubNub.
- Vamos começar criando uma conta. Se você já tem uma conta do Google, pode usá-la para fornecer suas credenciais.
- No console administrativo, você verá que um projeto de demonstração já foi criado para você. Clique nele para abrir o projeto no console.
- Ali, você verá seu conjunto de chaves de demonstração. Agora, clique nele para acessar seus detalhes.
- Em Complementos do aplicativo, na parte inferior da tela, você verá várias opções. Habilite as funções do PubNub, conforme mostrado na Figura 1:
Figura 1: Habilitando funções do PubNub
- O botão Salvar aparecerá no canto inferior esquerdo da tela. Clique nele para salvar suas alterações.
- Agora, vamos criar um módulo de aplicativo. No menu à esquerda, clique em PubNub Functions para abrir a tela PubNub Functions (veja a Figura 2):
Figura 2: A tela de funções do PubNub
- Na caixa de diálogo Criar novo módulo, digite "Saudação" no campo "Digite um novo nome de aplicativo". Clique no botão ‘Create New Module’, como você pode ver na Figura 3:
Figura 3: Criando um novo módulo
Você deve receber uma notificação "Novo módulo criado com sucesso" na parte superior da página. - Em seguida, codificaremos a função. Dentro do contexto de um aplicativo em tempo real, a Função é onde colocamos a lógica que é executada na mensagem. Clique no botão "+ CRIAR" para criar uma nova função.
- Na caixa de diálogo Nova função, insira "Exibir saudação" em "Nome da função", escolha "Antes de publicar ou disparar" em "Tipo de função" e insira "display_greeting" em "Nome do canal" (consulte a Figura 4 ):
Figura 4: Completando a sequência de criação
- Clique em "Criar".
O editor Display Greeting Module aparecerá. Ele mostrará a função de exibição de saudação no editor com um esqueleto básico. No momento, tudo o que ele faz é registrar a solicitação e devolvê-la como uma resolução de promessa :
export default (request) => { const kvstore = require('kvstore'); const xhr = require('xhr'); // Log the request envelope passed console.log('request', request); // Return a promise when you're done return request.ok(); }
No código anterior:
- O parâmetro de solicitação contém o objeto de envelope de mensagem PubNub.
- O corpo da função importa algumas bibliotecas, registra a solicitação e retorna a solicitação como uma resolução de promessa. (Retornar request.ok() é equivalente a retornar Promise.resolve(request)).
Essa função será executada toda vez que a mensagem entrar na rede PubNub Data Stream, mas antes de ser replicada e distribuída aos assinantes, porque seu tipo é ‘Before Publish’.
Agora, modificaremos o código da função para anexar um nome à mensagem padrão “Hello”.
- No editor de código de função, substitua a linha console.log pelo seguinte:
request.message.greeting += " world!";
- Clique em "Salvar".
- Agora, vamos testar nossa função. No campo 'Test Payload', insira o seguinte literal JSON, conforme mostrado na Figura 5:
{ "greeting": "Hello" }
Figura 5: Exibindo as informações da mensagem
- Clique em "Salvar teste".
- Clique em 'Publicar' para enviar a mensagem para o canal 'hello_greeting'. A saída será impressa no console de teste:
11:34:36 block: Deploying in regions: Eastern US, Western US, Asia, Central Europe. 11:34:38 block: Module is now globally deployed. 11:34:41 publish: { "greeting": "Hello world!" }
Como você pode ver, a saudação agora diz “Olá, mundo!”.
Usando o console do desenvolvedor de produção
Você pode ver nos exemplos anteriores que o console de teste integrado é conveniente, mas às vezes você pode querer usar o console do desenvolvedor de produção para emular melhor um ambiente de produção. Para usar o console do desenvolvedor de produção:
- Navegue até o PubNub Developer Console.
- Defina o "canal" como "hello_greeting".
- Defina as chaves de publicação e assinatura para aquelas do conjunto de chaves de demonstração.
- Clique em "Assinar".
- Clicar no botão Publicar desta vez exibe a mesma saída de produção que seu cliente veria o conteúdo mostrado nas Figuras 6 e 7:
Figura 6: Publicando a saudação
Figura 7: Mensagens de produção
Conclusão
Há muito mais no PubNub do que no Functions. Ele também oferece um ChatEngine, Data Stream Network, Realtime Messaging e muitas outras ferramentas voltadas para o desenvolvimento em tempo real. Seus serviços não são totalmente gratuitos, mas provavelmente valem o custo para a maioria das empresas.