Articles

Usando WebSockets com Node.js

O JavaScript Full-Stack Bootcamp 2021 está AGORA ABERTO PARA ASSINATURAS!

WebSockets são uma alternativa à comunicação HTTP em Aplicações Web.

Oferecem um canal de comunicação bidireccional de longa duração entre cliente e servidor.

Após estabelecido, o canal é mantido aberto, oferecendo uma ligação muito rápida com baixa latência e sobrecarga.

Suporte de navegador para WebSockets

WebSockets são suportados por todos os navegadores modernos.

p>Suporte de navegador para WebSockets

Como os WebSockets diferem do HTTP

HTTP é um protocolo muito diferente, e também uma forma diferente de comunicação.

HTTP é um protocolo de pedido/resposta: o servidor devolve alguns dados quando o cliente os solicita.

Com WebSockets:

  • o servidor pode enviar uma mensagem ao cliente sem que o cliente peça explicitamente algo
  • o cliente e o servidor podem falar um com o outro simultaneamente
  • muito poucos dados precisam de ser trocados para enviar mensagens. Isto significa uma comunicação de baixa latência.

WebSockets são óptimos para comunicações em tempo real e de longa duração.

HTTP é óptimo para trocas de dados ocasionais e interacções iniciadas pelo cliente.

HTTP é muito mais simples de implementar, enquanto que os WebSockets requerem um pouco mais de sobrecarga.

Sockets WebSockets seguros

Sempre utilizam o protocolo seguro e encriptado para WebSockets, wss://.

ws:// refere-se à versão insegura dos WebSockets (o http:// dos WebSockets), e deve ser evitado por razões óbvias.

Create a new WebSockets connection

const url = 'wss://myserver.com/something'const connection = new WebSocket(url)

connection é um objecto WebSocket.

Quando a ligação é estabelecida com sucesso, o open evento é despedido.

Oiça-o atribuindo uma função de retorno ao objecto onopen propriedade do objecto connection:

connection.onopen = () => { //...}

Se houver algum erro, a onerror função de retorno de chamada é disparada:

connection.onerror = error => { console.log(`WebSocket error: ${error}`)}

Enviar dados para o servidor utilizando WebSockets

Após a ligação estar aberta, é possível enviar dados para o servidor.

p>Pode fazê-lo convenientemente dentro da função onopen callback:

connection.onopen = () => { connection.send('hey')}

Receber dados do servidor utilizando WebSockets

Ouvir com uma função de callback em onmessage, que é chamado quando o message evento é recebido:

connection.onmessage = e => { console.log(e.data)}

Implementar um servidor WebSockets no Nodo.js

ws é uma popular biblioteca de WebSockets para Node.js.

Utilizamo-la para construir um servidor WebSockets. Também pode ser usada para implementar um cliente, e usar WebSockets para comunicar entre dois serviços backend.

Instale-o facilmente usando

yarn inityarn add ws

O código de que precisa para escrever é muito pouco:

const WebSocket = require('ws')const wss = new WebSocket.Server({ port: 8080 })wss.on('connection', ws => { ws.on('message', message => { console.log(`Received message => ${message}`) }) ws.send('ho!')})

Este código cria um novo servidor na porta 8080 (a porta por defeito para WebSockets), e adiciona uma função de chamada de retorno quando uma ligação é estabelecida, enviando ho! ao cliente, e registando as mensagens que recebe.

Veja um exemplo ao vivo em Glitch

Aqui está um exemplo ao vivo de um servidor WebSockets: https://glitch.com/edit/#!/flavio-websockets-server-example

Aqui é um cliente WebSockets que interage com o servidor: https://glitch.com/edit/#!/flavio-websockets-client-example

Download my free Node.js Handbook

div id=”9424025991″>O JavaScript Full-Stack Bootcamp 2021 AGORA ESTÁ ABERTO PARA SIGNIFICAR ATÉ TERÇA-FEIRA! Não perca esta oportunidade, inscreva-se HOJE!

Mais tutoriais de Nó:

  • dependências e desviosnpm
  • Como usar Sequelize para interagir com PostgreSQL
  • Uma breve história de Nó.js
  • Utilizar WebSockets com Nó.js
  • Como obter tanto o corpo analisado como o corpo bruto em Express
  • Como usar promessas e esperar com Node.js funções baseadas em Callback
  • Como instalar Node.js
  • Uma introdução ao gestor de pacotes npm
  • Interagir com a API do Google Analytics usando Node.js

br>

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *