Bibliotecas WebSocket TypeScript: visão geral completa e exemplos práticos
No desenvolvimento web moderno, a tecnologia WebSocket tornou-se o padrão para a criação de aplicações em tempo real (real-time). Graças à conexão bidirecional constante entre cliente e servidor, o WebSocket é ideal para chats, jogos online, traders de bolsa, sistemas de monitoramento e qualquer outro projeto que exija transmissão instantânea de dados. Neste artigo, analisaremos detalhadamente as três principais bibliotecas WebSocket para TypeScript: ws, Socket.IO e uWebSockets.js, incluindo sua instalação, configuração e exemplos de código.
1. Biblioteca ws — WebSocket leve e rápido para Node.js
A biblioteca ws é a implementação mais popular e minimalista do protocolo WebSocket para Node.js. Ela não adiciona abstrações extras, funciona diretamente com o protocolo nativo e oferece desempenho máximo. O TypeScript é suportado através de tipos que podem ser instalados separadamente.
Instalação
npm install wsnpm install -D @types/wsExemplo de servidor simples em TypeScript
import { WebSocketServer, WebSocket } from 'ws';
const wss = new WebSocketServer({ port: 8080 });
wss.on('connection', (ws: WebSocket) => { console.log('Cliente conectado');
ws.on('message', (message: Buffer) => { console.log('Mensagem recebida:', message.toString()); // Envia resposta para todos os clientes conectados wss.clients.forEach((client) => { if (client.readyState === WebSocket.OPEN) { client.send(`Eco: ${message.toString()}`); } }); });
ws.on('close', () => { console.log('Cliente desconectado'); });});
console.log('Servidor WebSocket iniciado em ws://localhost:8080');Código do cliente (navegador)
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => { console.log('Conexão estabelecida'); ws.send('Olá, servidor!');};
ws.onmessage = (event: MessageEvent) => { console.log('Resposta do servidor:', event.data);};Vantagens: overhead mínimo, controle total sobre o protocolo, ideal para sistemas de alta carga.
Desvantagens: sem suporte nativo a salas, reconexão automática ou fallback para transporte HTTP.
2. Socket.IO — solução versátil com API rica
Socket.IO não é apenas WebSocket, mas um framework completo para comunicações em tempo real. Ele usa WebSocket como transporte principal, mas muda automaticamente para HTTP long-polling se o WebSocket não estiver disponível (por exemplo, atrás de proxies ou navegadores antigos). Socket.IO fornece mecanismos prontos: salas, namespaces, reconexão automática, confirmação de entrega de mensagens (acknowledgements) e muito mais.
Instalação
npm install socket.io socket.io-clientnpm install -D @types/socket.ioExemplo de servidor com salas em TypeScript
import { Server, Socket } from 'socket.io';import http from 'http';
const server = http.createServer();const io = new Server(server, { cors: { origin: '*' }});
io.on('connection', (socket: Socket) => { console.log('Usuário conectado:', socket.id);
// Entrar em uma sala socket.on('join_room', (roomName: string) => { socket.join(roomName); socket.to(roomName).emit('user_joined', socket.id); });
// Enviar mensagem para a sala socket.on('room_message', (data: { room: string; message: string }) => { io.to(data.room).emit('new_message', { user: socket.id, text: data.message }); });
socket.on('disconnect', () => { console.log('Usuário desconectado:', socket.id); });});
server.listen(3000, () => { console.log('Servidor Socket.IO iniciado na porta Também na biblioteca
Geração Swagger/OpenAPI para Java: bibliotecas e ferramentas
Serialização de objetos em Swift (iOS/macOS): Codable, JSON e PropertyList
Geolocalização e mapas em Go: visão geral de bibliotecas e exemplos de código
Gerador de QR Codes em C# (.NET) com QRCoder