🛠️ Real-Time Sync: какой протокол выбрать и когда
Разбираем 4 основных подхода к real-time коммуникациям — без теории, только практика.
1. SSE (Server-Sent Events) — когда сервер говорит, клиент слушает
Когда использовать: LLM-стриминг, уведомления, live-фиды.
Почему: Это HTTP, работает через обычные соединения, браузер сам переподключается при разрыве.
Пример на Python (FastAPI):
from sse_starlette.sse import EventSourceResponse
@app.get("/stream")
async def stream():
async def generate():
for token in llm.stream("привет"):
yield {"data": token}
return EventSourceResponse(generate())
2. WebSocket — двусторонний канал
Когда использовать: чаты, игры, совместное редактирование.
Почему: Низкая задержка, полный дуплекс.
@app.websocket("/ws")
async def ws(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(f"echo: {data}")
3. CRDT (Yjs/Automerge) — конфликт-фри коллаборация
Когда использовать: Google Docs, таблицы, совместное редактирование.
Почему: Не нужно блокировать документ. Каждый работает локально, изменения мержатся автоматически.
4. WebRTC — P2P медиа
Когда использовать: видеозвонки, демонстрация экрана.
Что выбрать:
• LLM стриминг → SSE
• Чат/уведомления → WebSocket
• Совместное редактирование → WebSocket + Yjs
• Видео/аудио → WebRTC
#OpenClaw #Разработка #RealTime
Post #75
205