A felhasználók nem látják az üzeneteket valós időben, az értesítések késve érkeznek, az online chat pedig lassú? A REST nem alkalmas erre — WebSocketre vagy SSE-re van szükség. Kétirányú kommunikációs csatorna, azonnali kézbesítés, skálázhatóság Redis Pub/Sub segítségével. Ott működik, ahol a REST tehetetlen.
Valós idejű API fejlesztése — olyan rendszerek létrehozása, ahol az adatok azonnal kézbesítésre kerülnek. Chat, értesítések, együttműködésen alapuló szerkesztés, tőzsdei árfolyamok, online játékok — bármilyen forgatókönyv, ahol az üzenetkézbesítés sebessége számít.
WebSocket — teljes kétirányú kommunikációs csatorna TCP felett. Minimális késleltetés, állandó kapcsolat újrafelépítés nélkül
Server-Sent Events (SSE) — könnyű protokoll egyirányú eseménytovábbításhoz szervertől böngésző felé. Értesítések és frissítési hírfolyamok számára
Skálázhatóság — WebSocket Redis Pub/Sub vagy RabbitMQ segítségével vízszintes skálázáshoz. Több ezer egyidejű kapcsolat egy csomóponton.
Biztonság — WSS (WebSocket Secure), hitelesítés a kapcsolat létesítésekor, bejövő üzenetek érvényesítése
WebSocket · SSE · Pub/Sub · Redis · WSS
A valós idejű működés a feladatok széles skáláját öleli fel. Az egyszerű értesítésektől a többfelhasználós együttműködésig. A protokollt az adott forgatókönyvhöz igazítva választjuk ki.
WebSocket az azonnali üzenetkézbesítéshez. Állapotok támogatása: online, offline, gépel. Üzenetelőzmények, fájlok, reakciók. Csoportos és privát chat.
SSE a könnyű eseménykézbesítéshez a böngészőbe. Push-értesítések WebSocketen keresztül. Szűrés típus, prioritás, felhasználó szerint. Garantált kézbesítés.
Operational Transform a közös szerkesztéshez. WebSocket a kurzorok szinkronizálásához. OT-algoritmusok vagy CRDT a konfliktusok feloldásához.
A valós idejű az, amikor a felhasználó gyorsabban kapja meg az üzenetet, mint ahogy eszébe jutna "miért van csend". Olyan rendszereket építünk, ahol a késleltetést ezredmásodpercekben mérik, nem másodpercekben.
A valós idejű rendszerek nem csak WebSocket. Olyan architektúrát tervezünk, amely több ezer egyidejű kapcsolatot kezel és garantálja minden üzenet kézbesítését.
Kapcsolati architektúra — WebSocket vs SSE vs long-polling. A feladathoz igazítva választjuk ki a protokollt. Szobákat és csatornákat tervezünk csoportos küldéshez.
Skálázhatóság — Redis Pub/Sub a csomópontok közötti üzenetcseréhez. WebSocket-szerverek vízszintes skálázása megosztott állapottal.
Valós idejű Node.js-en — WebSocket-szerverek Node.js-en Socket.IO vagy ws segítségével. Integráció REST API-val és meglévő backenddel.
Kézbesítési garanciák — at-most-once, at-least-once, exactly-once. Visszaigazolás, újraküldés kapcsolat megszakadása esetén.
Monitoring — aktív kapcsolatok száma, sávszélesség, késleltetés. Prometheus + Grafana a valós idejű metrikákhoz.
REST + WebSocket hibrid — REST a kérés-válaszhoz és WebSocket a push-értesítésekhez. Optimális architektúra modern alkalmazásokhoz.
A Redis Pub/Sub lehetővé teszi a WebSocket-szerverek vízszintes skálázását. Az egyik csomóponton elküldött üzenet azonnal kézbesítésre kerül a Redis segítségével az összes többi csomópontra. Több ezer kapcsolat — egyetlen üzenetsor.
Rendeljen valós idejű API-t — kapjon olyan rendszert, ahol az adatok azonnal kézbesítésre kerülnek, a kapcsolatok megbízhatóak, és a skálázhatóság az architektúrába van építve.
At-least-once és exactly-once szemantikát valósítunk meg. Az üzenet akkor is megérkezik, ha átmenetileg megszakad a kapcsolat — visszaigazolási sor és újraküldési mechanizmus.
Redis Pub/Sub, WebSocket-szerverek vízszintes skálázása. Több ezer egyidejű kapcsolat példányonként, milliók klaszterenként.
Grafana-irányítópultok: aktív kapcsolatok, sávszélesség, késleltetés. Riasztások Telegramban a kapcsolat minőségének romlásakor.
A valós idejű az, amikor a felhasználó nem vár. Olyan rendszereket építünk, ahol a késleltetést ezredmásodpercekben mérik, és az üzenetkézbesítés még kapcsolat megszakadása esetén is garantált.