Ответ
- WebSocket — двустороннее соединение для обмена сообщениями в реальном времени.
const socket = new WebSocket('ws://example.com');
socket.onmessage = (event) => console.log(event.data);
- Server-Sent Events (SSE) — односторонний поток данных от сервера.
const eventSource = new EventSource('/updates');
eventSource.onmessage = (e) => console.log(e.data);
-
gRPC — высокопроизводительный RPC-фреймворк (обычно поверх HTTP/2).
-
WebRTC — P2P-соединение для передачи данных без сервера-посредника.
-
GraphQL (WebSockets/HTTP) — альтернатива REST, поддерживает подписки через WebSocket.
-
MQTT — легковесный протокол для IoT (часто поверх WebSocket).
Для большинства веб-приложений HTTP/WebSocket достаточно, но выбор зависит от задачи (реальное время, P2P, IoT и т.д.).
Ответ 18+ 🔞
Да ты посмотри, какие варианты нам подсовывают, чтобы сообщения в реальном времени гонять! Прямо как на базаре, выбирай не хочу. Сейчас я тебе, как есть, разложу, только не ори, что сложно.
WebSocket — это типа как телефонный звонок, только между браузером и сервером. Соединились — и болтайте, пока не надоест, в обе стороны. Идеально для чатов, уведомлений и прочей движухи.
const socket = new WebSocket('ws://example.com');
socket.onmessage = (event) => console.log(event.data);
Server-Sent Events (SSE) — а это уже как радио. Сервер вещает, а ты, клиент, только ушами хлопай, ответить не можешь. Просто, но однобоко. Для лент новостей или каких-нибудь статусов — самое то.
const eventSource = new EventSource('/updates');
eventSource.onmessage = (e) => console.log(e.data);
gRPC — это уже не игрушки, а серьёзная бандура для взрослых дядек. Высокопроизводительный фреймворк, обычно поверх HTTP/2. Если у тебя сервисы между собой на микроуровне общаться должны — это твой кандидат. Но в браузере без прокси-танцев с бубном — головная боль.
WebRTC — вот это, блядь, магия чистой воды! Прямое соединение, пир-ту-пир, без сервера-посредника. Хочешь видеочат сделать или файлы между пользователями перекинуть? Бери его. Хотя настройка этой хуйни иногда так мозг выносит, что волосы дыбом встают.
GraphQL — ну, ты знаешь, эта умная альтернатива REST. А ещё у него есть подписки, которые через тот же WebSocket обычно работают. Хочешь один эндпоинт на все случаи жизни и данные получать по запросу, а не как бог на душу положит? Запросто.
MQTT — это, сука, протокол для всяких умных чайников и лампочек (IoT). Легковесный, экономичный. В вебе его обычно в туннель из WebSocket засовывают, чтобы браузер понимал.
Короче, выбор-то, ёпта, от задачи зависит. Для обычного веб-приложения — HTTP и WebSocket тебе хватит за глаза. Но если ты задумал какую-нибудь ебучую распределённую систему или игру в реальном времени — тогда уже думай, в какую сторону копать. Главное — не выеби себе мозги на ровном месте, понимаешь?