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.
Por que WebSockets são essenciais para comunicação em tempo real?
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