Bibliotecas WebSocket TypeScript: ws, Socket.IO, uWebSockets.js

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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/ws


Exemplo 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.io


Exemplo 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

Recommendations