ws

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое библиотека ws?

ws — это легковесная, быстрая и проверенная временем WebSocket-библиотека для Node.js, написанная на TypeScript. Она предоставляет как клиентские, так и серверные реализации протокола WebSocket (RFC 6455). Библиотека отличается минимальным количеством зависимостей, высокой производительностью и полной поддержкой современных стандартов WebSocket, включая сжатие permessage-deflate.

Зачем нужна ws?

WebSocket — это протокол двунаправленной связи поверх TCP, который позволяет обмениваться данными в реальном времени между клиентом и сервером без необходимости постоянных HTTP-запросов. Библиотека ws необходима для создания приложений, требующих мгновенной передачи данных: чаты, онлайн-игры, биржевые котировки, системы уведомлений, совместное редактирование документов и любые другие real-time сервисы.

Как установить?

Установка через npm или yarn:

npm install ws
yarn 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 является стандартом де-факто.

Рекомендаций