¿Qué es la biblioteca ws?
ws es una biblioteca WebSocket ligera, rápida y probada para Node.js, escrita en TypeScript. Proporciona implementaciones tanto de cliente como de servidor del protocolo WebSocket (RFC 6455). La biblioteca se caracteriza por un número mínimo de dependencias, alto rendimiento y soporte completo para los estándares modernos de WebSocket, incluida la compresión permessage-deflate.
¿Para qué sirve ws?
WebSocket es un protocolo de comunicación bidireccional sobre TCP que permite intercambiar datos en tiempo real entre un cliente y un servidor sin necesidad de solicitudes HTTP constantes. La biblioteca ws es necesaria para crear aplicaciones que requieren transferencia instantánea de datos: chats, juegos en línea, cotizaciones bursátiles, sistemas de notificaciones, edición colaborativa de documentos y cualquier otro servicio en tiempo real.
¿Cómo instalar?
Instalación a través de npm o yarn:
npm install wsyarn add wsPara proyectos TypeScript no se requieren tipos adicionales: la biblioteca ya incluye sus propias declaraciones de tipos.
Funciones principales
- Comunicación bidireccional — envío y recepción simultánea de mensajes.
- Reconexión automática (se implementa con código de usuario, pero la biblioteca proporciona todos los eventos necesarios).
- Soporte de compresión (permessage-deflate) para reducir el tráfico.
- Trabajo con buffers y cadenas — envío de datos tanto de texto como binarios.
- Modelo basado en eventos — manejo de eventos open, message, close, error.
- Clustering — soporte para trabajar con múltiples procesos (a través de broadcast).
- Extensiones WebSocket — soporte para protocolos y extensiones personalizados.
Ejemplo de código en TypeScript
Un servidor y cliente WebSocket simple:
// 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('Recibido:', data.toString()); ws.send('¡Saludo del servidor!'); });
ws.on('close', () => { console.log('Cliente desconectado'); });});
console.log('Servidor iniciado en el puerto 8080');// client.tsimport WebSocket from 'ws';
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', () => { console.log('Conectado al servidor'); ws.send('¡Saludo del cliente!');});
ws.on('message', (data) => { console.log('Respuesta del servidor:', data.toString()); ws.close();});
ws.on('close', () => { console.log('Conexión cerrada');});¿Cuándo usar ws?
La biblioteca ws es ideal para:
- Creación de aplicaciones en tiempo real de alta carga (sistemas de chat, juegos en línea).
- Transmisión de datos en tiempo real (datos bursátiles, flujos IoT).
- Sistemas de notificaciones y alertas.
- Trabajo colaborativo (edición colaborativa, tableros de tareas).
- Servidores que funcionan en clúster o bajo PM2.
Si necesita una biblioteca WebSocket minimalista, rápida y confiable para TypeScript/Node.js — ws es el estándar de facto.