Этот вопрос касается популярных библиотек для работы с 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
Networks
Ключевые слова
Подпишись на React Developer в телеграм