Como usar WebSockets com Node.js e Express?

Os WebSockets permitem comunicação bidirecional em tempo real entre cliente e servidor em aplicações Node.js.

Como usar WebSockets com Node.js e Express?

Os WebSockets permitem comunicação bidirecional e em tempo real entre cliente e servidor, sendo amplamente usados em chats, notificações e jogos online.

1. Instalando o WebSocket no Node.js

Para usar WebSockets no Express.js, instalamos o pacote ws:

npm install ws

2. Criando um servidor WebSocket

Vamos criar um servidor WebSocket integrado ao Express.js:

const express = require('express');
const http = require('http');
const WebSocket = require('ws');

const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });

wss.on('connection', ws => {
    console.log('Novo cliente conectado');
    ws.send('Bem-vindo ao WebSocket!');

    ws.on('message', mensagem => {
        console.log('Mensagem recebida:', mensagem.toString());
        ws.send(`Echo: ${mensagem}`);
    });

    ws.on('close', () => console.log('Cliente desconectado'));
});

server.listen(3000, () => console.log('Servidor WebSocket rodando na porta 3000'));

Agora, podemos nos conectar via WebSocket no frontend ou via Postman.

3. Conectando ao WebSocket via JavaScript

No frontend, podemos conectar ao WebSocket com:

const socket = new WebSocket('ws://localhost:3000');

socket.onopen = () => {
    console.log('Conectado ao WebSocket');
    socket.send('Olá, servidor!');
};

socket.onmessage = event => {
    console.log('Mensagem do servidor:', event.data);
};

4. Enviando mensagens para todos os clientes conectados

Podemos broadcastar mensagens para todos os clientes conectados:

wss.on('connection', ws => {
    ws.on('message', mensagem => {
        wss.clients.forEach(cliente => {
            if (cliente.readyState === WebSocket.OPEN) {
                cliente.send(`Mensagem recebida: ${mensagem}`);
            }
        });
    });
});

Agora, qualquer mensagem enviada será retransmitida a todos os clientes conectados.

Conclusão

Os WebSockets tornam possível a comunicação instantânea entre cliente e servidor no Node.js, ideal para aplicações que exigem tempo real, como chats e dashboards dinâmicos.

O protocolo WebSocket é amplamente utilizado em sistemas que exigem baixa latência e comunicação contínua. Redes sociais, jogos multiplayer e sistemas financeiros se beneficiam dessa tecnologia para manter conexões abertas e responsivas.

Diferente do HTTP, onde cada requisição precisa de uma resposta, o WebSocket permite mensagens assíncronas, reduzindo o consumo de banda e melhorando a experiência do usuário.

Algumas aplicações:

  • Chats em tempo real
  • Notificações instantâneas
  • Monitoramento de eventos ao vivo
  • Jogos multiplayer
  • Streaming de dados financeiros

Dicas para quem está começando

  • Use ws para criar servidores WebSocket no Node.js.
  • Monitore conexões WebSocket para detectar desconexões.
  • Utilize WebSockets para atualizações em tempo real.
  • Evite enviar mensagens muito grandes para otimizar performance.
  • Implemente autenticação para conexões seguras.

Contribuições de Henrique Almeida

Compartilhe este tutorial: Como usar WebSockets com Node.js e Express?

Compartilhe este tutorial

Continue aprendendo:

Como fazer versionamento de APIs no Express.js?

O versionamento de APIs no Express.js permite criar múltiplas versões de endpoints, garantindo compatibilidade com aplicações antigas.

Tutorial anterior

Como consumir uma API externa dentro do Node.js?

O Node.js permite consumir APIs externas para obter dados, enviar informações e integrar serviços de terceiros.

Próximo tutorial