Что такое библиотека ws?
ws — это легковесная, быстрая и проверенная временем WebSocket-библиотека для Node.js, написанная на TypeScript. Она предоставляет как клиентские, так и серверные реализации протокола WebSocket (RFC 6455). Библиотека отличается минимальным количеством зависимостей, высокой производительностью и полной поддержкой современных стандартов WebSocket, включая сжатие permessage-deflate.
Зачем нужна ws?
WebSocket — это протокол двунаправленной связи поверх TCP, который позволяет обмениваться данными в реальном времени между клиентом и сервером без необходимости постоянных HTTP-запросов. Библиотека ws необходима для создания приложений, требующих мгновенной передачи данных: чаты, онлайн-игры, биржевые котировки, системы уведомлений, совместное редактирование документов и любые другие real-time сервисы.
Как установить?
Установка через npm или yarn:
npm install wsyarn add wsДля TypeScript-проектов дополнительные типы не требуются — библиотека уже включает в себя декларации типов.
Основные функции
- Двунаправленная связь — одновременная отправка и получение сообщений.
- Автоматическое переподключение (реализуется пользовательским кодом, но библиотека предоставляет все необходимые события).
- Поддержка сжатия (permessage-deflate) для уменьшения трафика.
- Работа с буферами и строками — отправка как текстовых, так и бинарных данных.
- Событийная модель — обработка событий open, message, close, error.
- Кластеризация — поддержка работы с несколькими процессами (через broadcast).
- WebSocket-расширения — поддержка пользовательских протоколов и расширений.
Пример кода на TypeScript
Простой WebSocket-сервер и клиент:
// server.ts
import { WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 8080 });
wss.on('connection', (ws) => {
console.log('Клиент подключен');
ws.on('message', (data) => {
console.log('Получено:', data.toString());
ws.send('Привет от сервера!');
});
ws.on('close', () => {
console.log('Клиент отключен');
});
});
console.log('Сервер запущен на порту 8080');
// client.ts
import WebSocket from 'ws';
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', () => {
console.log('Подключено к серверу');
ws.send('Привет от клиента!');
});
ws.on('message', (data) => {
console.log('Ответ сервера:', data.toString());
ws.close();
});
ws.on('close', () => {
console.log('Соединение закрыто');
});
Когда использовать ws?
Библиотека ws идеально подходит для:
- Создания высоконагруженных real-time приложений (чат-системы, онлайн-игры).
- Трансляции данных в реальном времени (биржевые данные, IoT-потоки).
- Систем уведомлений и оповещений.
- Совместной работы (коллаборативное редактирование, доски задач).
- Серверов, работающих в кластере или под PM2.
Если вам нужна минималистичная, быстрая и надежная WebSocket-библиотека для TypeScript/Node.js — ws является стандартом де-факто.
Также в библиотеке
Стандартная библиотека Go (Golang): полный обзор
Обработка Markdown в TypeScript: библиотеки, парсеры и практическое применение
Планировщик задач на PHP: библиотека cron‑expression для гибкого расписания
Интернационализация (i18n) в C# (.NET): полное руководство