WebSocket
WebSocket — это коммуникационный протокол, который обеспечивает двустороннюю связь между клиентом и сервером через единое TCP соединение.
Особенности WebSocket
- Постоянное соединение — нет необходимости устанавливать соединение для каждого сообщения
- Низкая задержка — минимальные накладные расходы
- Двусторонняя связь — сервер может инициировать отправку данных
- Полнодуплексная связь — одновременная передача в обе стороны
WebSocket vs HTTP
- HTTP — запрос-ответ модель, без состояния
- WebSocket — постоянное соединение с состоянием
- Накладные расходы — WebSocket имеет меньше накладных расходов
- Real-time — WebSocket лучше для real-time приложений
Пример клиента WebSocket
1// Создание соединения
2const socket = new WebSocket('wss://example.com/websocket');
3
4// Обработка открытия соединения
5socket.addEventListener('open', function (event) {
6 console.log('Соединение установлено');
7 socket.send('Привет, сервер!');
8});
9
10// Обработка сообщений
11socket.addEventListener('message', function (event) {
12 console.log('Сообщение от сервера:', event.data);
13});
14
15// Обработка закрытия соединения
16socket.addEventListener('close', function (event) {
17 console.log('Соединение закрыто');
18});
19
20// Обработка ошибок
21socket.addEventListener('error', function (event) {
22 console.log('Ошибка WebSocket:', event);
23});
Применения WebSocket
- Чаты — мгновенные сообщения
- Онлайн игры — синхронизация состояния
- Live обновления — новости, биржевые котировки
- Коллаборативные инструменты — Google Docs
- IoT приложения — данные с датчиков
WebSocket библиотеки
- Socket.IO — полнофункциональная библиотека
- ws — простая WebSocket библиотека для Node.js
- sockjs — WebSocket-подобный объект с fallback
- uWebSockets — высокопроизводительная реализация
FAQ
Когда использовать WebSocket вместо HTTP?
Используйте WebSocket когда нужна двусторонняя связь в реальном времени, частый обмен данными или push-уведомления от сервера.