Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: websocket, socketio

С помощью какой библиотеки можно работа с web sockets?

Этот вопрос касается популярных библиотек для работы с WebSockets в JavaScript приложениях.

Короткий ответ

Для работы с WebSockets можно использовать библиотеку Socket.IO, которая предоставляет дополнительные возможности поверх нативного WebSocket API, такие как автоматические reconnection, room management и fallback polling. Также популярны ws для Node.js сервера, uWebSockets.js для высокой производительности, и нативный WebSocket API для простых случаев.

Длинный ответ

Различные библиотеки предоставляют разные уровни абстракции для работы с WebSockets.

Socket.IO (самая популярная):

Клиентская часть:

import io from 'socket.io-client';

const socket = io('http://localhost:3000', {
  transports: ['websocket', 'polling'] // Fallback
});

// События подключения
socket.on('connect', () => {
  console.log('Connected to server');
});

// Отправка данных
socket.emit('chat message', 'Hello world');

// Получение данных
socket.on('chat message', (msg) => {
  console.log('Message received:', msg);
});

// Автоматическое переподключение
socket.on('reconnect', (attempt) => {
  console.log(`Reconnected after ${attempt} attempts`);
});

Серверная часть (Node.js):

const express = require('express');
const http = require('http');
const { Server } = require('socket.io');

const app = express();
const server = http.createServer(app);
const io = new Server(server);

io.on('connection', (socket) => {
  console.log('User connected:', socket.id);

  socket.on('chat message', (msg) => {
    // Broadcast всем клиентам
    io.emit('chat message', msg);
  });

  socket.on('disconnect', () => {
    console.log('User disconnected');
  });
});

server.listen(3000);

Альтернативные библиотеки:

ws (легковесная для Node.js):

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    console.log('Received:', message);
  });

  ws.send('Hello from server');
});

uWebSockets.js (высокая производительность):

const uWS = require('uWebSockets.js');

uWS.App().ws('/*', {
  open: (ws) => {
    console.log('Client connected');
  },
  message: (ws, message) => {
    ws.send(message);
  }
}).listen(3000);

Нативный WebSocket API:

const socket = new WebSocket('ws://localhost:8080');

socket.onopen = () => {
  socket.send('Hello Server!');
};

socket.onmessage = (event) => {
  console.log('Message from server:', event.data);
};

socket.onclose = () => {
  console.log('Connection closed');
};

Дополнительные возможности Socket.IO:

Комнаты (Rooms):

// Сервер
socket.join('room1');
io.to('room1').emit('message', 'Hello room');

// Namespaces
const adminNamespace = io.of('/admin');
adminNamespace.on('connection', (socket) => {
  // Только для админов
});

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

  • Networks

Ключевые слова

#websocket

#socketio

Подпишись на React Developer в телеграм