WebSockets — это протокол двусторонней связи (full-duplex communication) поверх TCP-соединения, который позволяет устанавливать постоянное соединение между клиентом (например, браузером) и сервером. В отличие от HTTP, который работает по схеме "запрос-ответ" (request-response), WebSockets обеспечивают:
Используется для чатов, уведомлений, онлайн-игр, биржевых котировок и других real-time приложений.
Для работы с WebSockets в React нужно:
import { useState, useEffect } from 'react';
function WebSocketComponent() {
const [messages, setMessages] = useState([]);
const [socket, setSocket] = useState(null);
useEffect(() => {
// 1. Создаем соединение
const ws = new WebSocket('wss://your-websocket-server.com');
// Обработчики событий
ws.onopen = () => {
console.log('Connected to WebSocket');
setSocket(ws);
};
ws.onmessage = (event) => {
// 2. Обновляем состояние при получении сообщения
setMessages(prev => [...prev, event.data]);
};
ws.onclose = () => console.log('Disconnected');
// 3. Очистка при размонтировании
return () => {
if (ws.readyState === WebSocket.OPEN) {
ws.close();
}
};
}, []);
const sendMessage = (text) => {
if (socket && socket.readyState === WebSocket.OPEN) {
socket.send(text);
}
};
return (
<div>
<button onClick={() => sendMessage('Hello!')}>Send</button>
<ul>
{messages.map((msg, i) => <li key={i}>{msg}</li>)}
</ul>
</div>
);
}
readyState
перед отправкой.Для сложных real-time приложений можно использовать библиотеки:
React.memo
для дочерних компонентов.WebSockets в React требуют аккуратной работы с жизненным циклом соединения и состоянием. Для простых случаев хватит нативного API, для сложных — лучше взять Socket.IO. Всегда закрывайте соединение и обрабатывайте ошибки!