Infrastructure

WebSocket

Протокол двунаправленной постоянной связи между клиентом и сервером для real-time приложений.

Что такое WebSocket

WebSocket — протокол, создающий постоянное двунаправленное TCP-соединение между клиентом и сервером. В отличие от HTTP (запрос → ответ), WebSocket позволяет обеим сторонам отправлять сообщения в любой момент без overhead нового HTTP-соединения.

Для ML применяется в:

  • Real-time голосовых интерфейсах — непрерывный поток аудио и ответов
  • Интерактивных нотбуках — JupyterLab использует WebSocket
  • Streaming LLM с bi-directional прерываниями — пользователь может прервать генерацию

HTTP SSE vs WebSocket для LLM стриминга

Server-Sent Events (SSE) WebSocket
Направление Только сервер → клиент Двунаправленный
Протокол HTTP WS (TCP over Upgrade)
Сложность Простой Немного сложнее
Применение для LLM Стандарт (OpenAI API) Голос, прерывания
Поддержка браузеров Нативная Нативная

Пример: WebSocket стриминг

# Сервер (FastAPI)
from fastapi import FastAPI, WebSocket
app = FastAPI()

@app.websocket("/ws/chat")
async def chat_ws(websocket: WebSocket):
    await websocket.accept()
    while True:
        user_message = await websocket.receive_text()
        async for token in model.stream(user_message):
            await websocket.send_text(token)

# Клиент (Python)
import asyncio, websockets
async def chat():
    async with websockets.connect("ws://localhost:8000/ws/chat") as ws:
        await ws.send("Привет!")
        async for token in ws:
            print(token, end="", flush=True)

Связанные термины

  • REST API — стандартный HTTP-интерфейс для большинства случаев
  • streaming — SSE-стриминг через REST (альтернатива WebSocket)
  • Whisper и real-time STT — применения WebSocket в ML

Готовы запустить GPU-задачу?

Запустить GPU-сервер