WebSockets jako usługa

Zarządzana platforma realtime stojąca za czatem i danymi na żywo foony.com, dostępna dla każdego dewelopera na foony.io.

Usługa WebSocket utrzymuje stałe połączenie między twoimi serwerami a każdym podłączonym klientem, więc aktualizacje docierają w momencie, gdy się dzieją, a nie przy kolejnym odświeżeniu strony. Foony Realtime załatwia za ciebie te mniej efektowne rzeczy: połączenia, ponowne łączenia, rozsyłanie, obecność i historię wiadomości, wszystko za jednym małym SDK.

1.5Mgraczy obsłużonych miesięcznie
500M+wiadomości dostarczonych miesięcznie
<100msdocelowy czas rozsyłania p95

Wypróbuj na żywo

Wszystko poniżej działa właśnie teraz na produkcyjnej usłudze pod realtime.foony.io. Otwórz tę stronę w drugiej karcie i zobacz, jak obie się odzwierciedlają.

Obecność i kursory na żywo

Każdy, kto czyta tę stronę, pojawia się tutaj, prosto z obecności kanału. Pozycje kursorów podróżują jako ulotne wiadomości, warstwa o niskim opóźnieniu, która całkowicie pomija zapisywanie.

1 teraz tutajPoruszaj myszką. Kliknij, żeby pomachać.

Czat na żywo

To prawdziwy czat tej strony, ten sam pokój @foony/chat, na którym działa każda strona i pokój gry Foony. Wiadomości docierają jednym kanałem z historią, a wysyłanie przechodzi przez serwer Foony, więc każda wiadomość jest moderowana.

Nikt nic ostatnio nie powiedział. Przełam lody.

Synchronizacja bazy danych

To jest produkcyjny pipeline foony.com: wpisz dowolną nazwę użytkownika Foony, a jego publiczny wiersz Postgres wpłynie przez WebSocket strony i będzie się aktualizować na żywo, gdy on gra. Bez odpytywania, bez punktu końcowego API.

Szukam…

Dlaczego zespoły kupują WebSockety, zamiast je budować

  • Ponowne połączenia, które nie gubią wiadomości. Przeglądarki bez przerwy zrywają połączenia. Klienci wznawiają tam, gdzie skończyli, dzięki odtwarzaniu historii, więc niestabilne połączenie nie oznacza pominiętych wiadomości.
  • Rozgłaszanie na dużą skalę. Dostarczenie jednej wiadomości do stu tysięcy subskrybentów w mniej niż sekundę to trudny problem systemów rozproszonych. Tutaj to całe zadanie.
  • Obecność bez ręcznej ewidencji. Zobacz, kto jest teraz online, i reaguj na zdarzenia wejścia, aktualizacji i wyjścia, bez pisania własnej logiki heartbeat i limitów czasu.
  • Bez planowania pojemności. Serwery WebSocket są stanowe, więc samodzielne skalowanie oznacza opróżnianie, sharding i sticky routing. Usługa zarządzana sprawia, że to problem kogoś innego.

Co dostajesz z Foony Realtime

Kanały i pub/sub

Rozgłaszaj nazwane zdarzenia przez WebSocket lub REST do kanałów przypisanych do aplikacji (np. chat:lobby) z przewidywalną semantyką dostarczania.

Obecność

Śledź, kto jest online, automatycznie odświeżaj listę członków i reaguj na zdarzenia wejścia, aktualizacji i wyjścia.

Historia wiadomości

Odtwarzaj ostatnie wiadomości z trwałego magazynu, aby klienci czysto odzyskiwali stan po ponownym połączeniu.

Uwierzytelnianie tokenem

Twórz krótkotrwałe tokeny klienta ze swojego backendu z uprawnieniami do publikowania, subskrybowania, obecności i historii na poziomie kanału.

Zgodność z Pusher

Mówi protokołem Pusher, więc aplikacje z pusher-js i Laravel Echo łączą się dzięki zmianie konfiguracji, a nie przepisywaniu.

Synchronizacja bazy danych

Przesyłaj zmiany Postgres prosto do subskrybowanych klientów jako zapytania na żywo, bez odpytywania i bez kodu klejącego.

Cała integracja to kilka linijek:

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' });

Sprawdzone w boju na prawdziwych grach

Foony intensywnie korzysta z Foony Realtime do czatu i aktualizacji bazy danych w czasie rzeczywistym. Około 1,5 miliona graczy miesięcznie polega na foony.io przy mniej więcej 500 milionach wiadomości, a gra multiplayer działa dobrze tylko wtedy, gdy docierają szybko, w kolejności i dokładnie raz. Foony nie byłoby możliwe bez niezawodności i opłacalności foony.io.

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

Zobacz to w akcji w dowolnej z naszych gier, a potem zdobądź tę samą infrastrukturę z pulpitem i SDK na foony.io.

Bulby, maskotka Foony

Wypróbuj to na własnym ruchu

Darmowy plan obejmuje 9 milionów wiadomości miesięcznie. Bez karty kredytowej.

Często zadawane pytania

Czym jest WebSockets jako usługa?

Zarządzana platforma, która przejmuje trwałe połączenia między twoją aplikacją a jej użytkownikami. Zamiast uruchamiać własne serwery WebSocket, twoi klienci łączą się z usługą, twój backend publikuje wiadomości na kanałach przez SDK lub REST, a usługa zajmuje się dostarczaniem, ponownymi połączeniami, obecnością i historią.

Czym Foony Realtime różni się od Pushera lub Ably?

Obejmuje tę samą podstawową funkcjonalność kanałów, obecności, historii i uwierzytelniania tokenami oraz mówi protokołem Pushera, więc działa jako gotowa alternatywa dla Pushera. Różnica tkwi w pochodzeniu i cenie. Zostało zbudowane dla foony.com, naszej własnej strony z grami multiplayer, a darmowy plan obejmuje 9 milionów wiadomości miesięcznie.

Czy muszę przepisać aplikację, żeby się przesiąść?

Zwykle nie. Aplikacje pusher-js i Laravel Echo można skierować na Foony Realtime za pomocą zmiany konfiguracji. Nowe projekty używają SDK @foony/realtime dla JavaScript i TypeScript, SDK Go lub API REST z dowolnego języka.

Ile to kosztuje?

Darmowy plan obejmuje 9 milionów wiadomości miesięcznie. Płatne plany dodają miesięczną pojemność, a użycie powyżej twojego planu jest rozliczane za każdy milion wiadomości. Aktualne liczby znajdziesz na foony.io/pricing.

8 Ball Pool online multiplayer billiards icon