← Ко всем open source проектам

Socket.IO

socketio/socket.io

Socket.IO — библиотека для двусторонней связи в реальном времени между клиентом и сервером.

Форки 10,154
Автор socketio
Язык TypeScript
Лицензия MIT
Обновлено 2026-06-27

Что это такое

Socket.IO — библиотека для двусторонней связи в реальном времени. Она помогает серверу и клиенту обмениваться событиями без постоянного ручного опроса: чат, уведомления, совместное редактирование, игровые состояния и живые панели.

Проект появился вокруг практической проблемы веба: обычный HTTP хорош для запрос-ответ, но плохо подходит для ситуаций, где сервер сам должен быстро сообщить клиенту об изменении.

Как работает модель событий

Socket.IO строится вокруг событий. Клиент подключается к серверу, подписывается на события, отправляет свои сообщения, а сервер рассылает обновления нужным подключенным клиентам.

Библиотека не равна чистому WebSocket. Она добавляет слой удобства: переподключение, комнаты, пространства имен, подтверждения доставки и запасные варианты транспорта.

Минимальный сервер

Пример показывает базовую идею: сервер принимает подключение, слушает событие `chat message` и рассылает его всем клиентам.

Язык: JavaScript
import { Server } from 'socket.io';

const io = new Server(3000, {
  cors: { origin: 'https://example.com' }
});

io.on('connection', (socket) => {
  socket.on('chat message', (message) => {
    io.emit('chat message', message);
  });
});

Что внутри репозитория

В репозитории живет серверная часть Socket.IO, TypeScript-код, тесты и связанная инфраструктура вокруг протокола. Клиентские части и адаптеры развиваются в соседних пакетах экосистемы.

Важная часть проекта — совместимость с разными платформами. Socket.IO используют не только в браузере: клиенты есть для разных языков и окружений.

Сильные стороны

Сильная сторона — простая событийная модель. Команда может мыслить не низкоуровневыми кадрами WebSocket, а бизнес-событиями: сообщение отправлено, документ изменен, пользователь вошел в комнату.

Вторая сильная сторона — зрелая экосистема. Для распространенных сценариев уже есть документация, адаптеры и практики масштабирования.

Ограничения

Socket.IO требует аккуратной архитектуры состояния. Если серверы масштабируются горизонтально, нужно продумать адаптер, комнаты, доставку событий и поведение при переподключении.

Для простого однонаправленного потока иногда достаточно Server-Sent Events или обычного WebSocket. Socket.IO полезен, когда нужны именно удобства вокруг двусторонней связи.