WebSockets jako služba

Spravovaná realtime platforma za chatem a živými daty foony.com, otevřená všem vývojářům na foony.io.

WebSocketová služba udržuje trvalé spojení mezi tvými servery a každým připojeným klientem, takže aktualizace dorazí ve chvíli, kdy se stanou, místo až při dalším obnovení stránky. Foony Realtime za tebe zvládne tu neefektní práci: připojení, opětovná připojení, rozesílání, presenci a historii zpráv, to vše za jedním malým SDK.

1.5Mměsíčně obsloužených hráčů
500M+doručených zpráv za měsíc
<100mscíl p95 pro rozesílání

Vyzkoušej to naživo

Vše níže běží právě teď proti produkční službě na realtime.foony.io. Otevři tuhle stránku ve druhé záložce a sleduj, jak se navzájem zrcadlí.

Presence a živé kurzory

Každý, kdo právě čte tuhle stránku, se objeví tady, přímo z presence kanálu. Pozice kurzorů putují jako pomíjivé zprávy, což je nízkolatenční vrstva, která zcela přeskakuje ukládání.

1 tady teďPohni myší. Klikni a zamávej.

Živý chat

Tohle je skutečný chat pro tuhle stránku, ta samá @foony/chat místnost, na které běží každá Foony stránka a herní místnost. Zprávy přicházejí přes jeden kanál s historií a odesílání jde přes Foony server, takže každá zpráva je moderovaná.

Nikdo nedávno nic neřekl. Prolom ledy.

Synchronizace databáze

Tohle je produkční pipeline foony.com: napiš jakékoliv Foony uživatelské jméno a jeho veřejný řádek z Postgresu se streamuje přes WebSocket webu a pak se dál živě aktualizuje, jak hráč hraje. Žádné pollování, žádný API endpoint.

Hledám…

Proč si týmy WebSockety kupují místo toho, aby je stavěly

  • Znovupřipojení, která neztrácejí zprávy. Prohlížeče ztrácejí spojení pořád. Klienti pokračují tam, kde skončili, díky přehrání historie, takže výpadek spojení neznamená zmeškané zprávy.
  • Rozesílání ve velkém. Doručit jednu zprávu stotisícům odběratelů za méně než sekundu je náročný problém distribuovaných systémů. Tady je to celá práce.
  • Přítomnost bez účetnictví. Uvidíš, kdo je právě online, a reaguj na události příchodu, aktualizace a odchodu, aniž bys psal vlastní logiku heartbeatů a timeoutů.
  • Žádné plánování kapacity. WebSocket servery jsou stavové, takže jejich vlastní škálování znamená drainování, shardování a sticky routing. Řízená služba to přehodí na pager někoho jiného.

Co získáš s Foony Realtime

Kanály a pub/sub

Rozesílej pojmenované události přes WebSocket nebo REST do kanálů v rámci aplikace (např. chat:lobby) s předvídatelnou sémantikou doručení.

Přítomnost

Sleduj, kdo je online, automaticky obnovuj členství a reaguj na události příchodu, aktualizace a odchodu.

Historie zpráv

Přehraj nedávné zprávy z trvalého úložiště, aby se klienti čistě zotavili po znovupřipojení.

Autentizace tokeny

Vytvářej ze svého backendu krátkodobé klientské tokeny s oprávněními k publikování, odběru, přítomnosti a historii na úrovni kanálu.

Kompatibilní s Pusher

Mluví protokolem Pusher, takže aplikace s pusher-js a Laravel Echo se připojí změnou konfigurace místo přepisování.

Synchronizace databáze

Streamuj změny v Postgresu rovnou odebírajícím klientům jako živé dotazy, žádné pollování a žádný lepicí kód.

Celá integrace je pár řádků:

const realtime = new Realtime({ authCallback });
const channel = realtime.channels.get('chat:lobby');

channel.on((message) => {
  showMessage(message.data);
});

await channel.publish('message', { text: 'hello' });
await channel.presence.enter({ name: 'Acorn' });

Vyzkoušeno v ostrém provozu

Foony hojně využívá Foony Realtime pro náš chat a realtimové aktualizace databáze. Zhruba 1,5 milionu hráčů měsíčně se spoléhá na foony.io při přibližně 500 milionech zpráv a multiplayerová hra se cítí správně jen tehdy, když zprávy dorazí rychle, ve správném pořadí a přesně jednou. Foony by bez spolehlivosti a nákladové efektivity foony.io nebylo možné.

8 Ball Pool online multiplayer billiards thumbnailDinoMight Bomberman style online multiplayer thumbnailChess online multiplayer board thumbnail9 Ball Pool online multiplayer billiards thumbnailSnooker online multiplayer thumbnailCarrom board game online multiplayer thumbnail

Podívej se, jak to funguje, v kterékoli z našich her a pak získej stejnou infrastrukturu s dashboardem a SDK na foony.io.

Bulby, maskot Foony

Vyzkoušej to na svém vlastním provozu

Bezplatný tarif zahrnuje 9 milionů zpráv měsíčně. Bez platební karty.

Časté dotazy

Co je WebSockets jako služba?

Spravovaná platforma, která vlastní trvalá spojení mezi tvojí aplikací a jejími uživateli. Místo provozování vlastních WebSocket serverů se tvoji klienti připojí ke službě, tvůj backend publikuje zprávy do kanálů přes SDK nebo REST a služba se stará o doručení, opětovná připojení, přítomnost a historii.

Čím se Foony Realtime liší od Pusher nebo Ably?

Pokrývá stejnou základní sadu kanálů, přítomnosti, historie a token autentizace a mluví protokolem Pusher, takže funguje jako plnohodnotná náhrada Pusher. Rozdíl je v původu a ceně. Byl postaven pro foony.com, naši vlastní multiplayerovou herní stránku, a bezplatný tarif zahrnuje 9 milionů zpráv měsíčně.

Musím kvůli přechodu přepisovat svou aplikaci?

Obvykle ne. Aplikace s pusher-js a Laravel Echo lze na Foony Realtime nasměrovat změnou konfigurace. Nové projekty používají @foony/realtime SDK pro JavaScript a TypeScript, Go SDK nebo REST API z jakéhokoli jazyka.

Kolik to stojí?

Bezplatný tarif zahrnuje 9 milionů zpráv měsíčně. Placené tarify přidávají měsíční kapacitu a využití nad rámec tvého tarifu se účtuje za milion zpráv. Aktuální čísla najdeš na foony.io/pricing.

8 Ball Pool online multiplayer billiards icon