O que é a biblioteca ws?
ws é uma biblioteca WebSocket leve, rápida e testada pelo tempo para Node.js, escrita em TypeScript. Ela fornece implementações tanto do lado do cliente quanto do servidor do protocolo WebSocket (RFC 6455). A biblioteca se destaca pelo número mínimo de dependências, alta performance e suporte completo aos padrões modernos de WebSocket, incluindo a compressão permessage-deflate.
Para que serve a ws?
WebSocket é um protocolo de comunicação bidirecional sobre TCP que permite a troca de dados em tempo real entre cliente e servidor, sem a necessidade de requisições HTTP constantes. A biblioteca ws é essencial para criar aplicações que exigem transmissão instantânea de dados: chats, jogos online, cotações de bolsa, sistemas de notificações, edição colaborativa de documentos e qualquer outro serviço em tempo real.
Como instalar?
Instalação via npm ou yarn:
npm install wsyarn add wsPara projetos TypeScript, tipos adicionais não são necessários — a biblioteca já inclui suas próprias declarações de tipos.
Principais funcionalidades
- Comunicação bidirecional — envio e recebimento simultâneo de mensagens.
- Reconexão automática (implementada pelo código do usuário, mas a biblioteca fornece todos os eventos necessários).
- Suporte a compressão (permessage-deflate) para reduzir o tráfego.
- Trabalho com buffers e strings — envio de dados tanto textuais quanto binários.
- Modelo baseado em eventos — tratamento dos eventos open, message, close, error.
- Clustering — suporte para trabalhar com múltiplos processos (via broadcast).
- Extensões WebSocket — suporte para protocolos e extensões personalizadas.
Exemplo de código em TypeScript
Um servidor e cliente WebSocket simples:
// server.tsimport { WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 8080 });
wss.on('connection', (ws) => { console.log('Cliente conectado');
ws.on('message', (data) => { console.log('Recebido:', data.toString()); ws.send('Olá do servidor!'); });
ws.on('close', () => { console.log('Cliente desconectado'); });});
console.log('Servidor rodando na porta 8080');// client.tsimport WebSocket from 'ws';
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', () => { console.log('Conectado ao servidor'); ws.send('Olá do cliente!');});
ws.on('message', (data) => { console.log('Resposta do servidor:', data.toString()); ws.close();});
ws.on('close', () => { console.log('Conexão fechada');});Quando usar a ws?
A biblioteca ws é ideal para:
- Criação de aplicações em tempo real de alta carga (sistemas de chat, jogos online).
- Transmissão de dados em tempo real (dados de bolsa, fluxos IoT).
- Sistemas de notificações e alertas.
- Trabalho colaborativo (edição colaborativa, quadros de tarefas).
- Servidores rodando em cluster ou sob PM2.
Se você precisa de uma biblioteca WebSocket minimalista, rápida e confiável para TypeScript/Node.js — a ws é o padrão de facto.