WebSocket come Servizio

La piattaforma realtime gestita dietro la chat e i dati in tempo reale di foony.com, aperta a ogni sviluppatore su foony.io.

Un servizio WebSocket mantiene una connessione persistente aperta tra i tuoi server e ogni client connesso, così gli aggiornamenti arrivano nel momento in cui accadono invece che al prossimo aggiornamento della pagina. Foony Realtime fa per te le parti meno glamour: connessioni, riconnessioni, fan-out, presenza e cronologia messaggi, tutto dietro un piccolo SDK.

1.5Mgiocatori serviti al mese
500M+messaggi consegnati al mese
<100msobiettivo fan-out p95

Provalo dal vivo

Tutto ciò che vedi qui sotto gira in questo momento sul servizio di produzione realtime.foony.io. Apri questa pagina in una seconda scheda e guarda le due rispecchiarsi a vicenda.

Presenza e cursori dal vivo

Chiunque stia leggendo questa pagina appare qui, direttamente dalla presenza del canale. Le posizioni dei cursori viaggiano come messaggi effimeri, il livello a bassa latenza che salta del tutto la memorizzazione.

1 qui oraMuovi il mouse. Clicca per salutare.

Chat dal vivo

Questa è la vera chat di questa pagina, la stessa stanza @foony/chat su cui gira ogni pagina e ogni stanza di gioco di Foony. I messaggi arrivano su un unico canale con cronologia, e gli invii passano dal server di Foony così ogni messaggio è moderato.

Nessuno ha detto niente di recente. Rompi il ghiaccio tu.

Sincronizzazione Database

Questa è la pipeline di produzione di foony.com: digita un qualsiasi username Foony e la sua riga pubblica di Postgres arriva in streaming sul WebSocket del sito, poi continua ad aggiornarsi in tempo reale mentre gioca. Niente polling, nessun endpoint API.

Ricerca in corso…

Perché i team comprano i WebSocket invece di costruirli

  • Riconnessioni che non perdono messaggi. I browser interrompono le connessioni di continuo. I client riprendono da dove si erano fermati grazie al replay della cronologia, così una connessione instabile non significa messaggi persi.
  • Fan-out su larga scala. Consegnare un messaggio a centomila sottoscrittori in meno di un secondo è un difficile problema di sistemi distribuiti. Qui, è tutto il nostro lavoro.
  • Presenza senza contabilità. Vedi chi è online in questo momento e reagisci agli eventi di ingresso, aggiornamento e uscita, senza scrivere la tua logica di heartbeat e timeout.
  • Nessuna pianificazione della capacità. I server WebSocket sono stateful, quindi scalarli da soli significa draining, sharding e routing sticky. Un servizio gestito rende tutto questo un problema di qualcun altro.

Cosa ottieni con Foony Realtime

Canali e pub/sub

Fai il fan-out di eventi nominati via WebSocket o REST verso canali con ambito dell'app (es. chat:lobby) con semantiche di consegna prevedibili.

Presenza

Traccia chi è online, aggiorna automaticamente i membri e reagisci agli eventi di ingresso, aggiornamento e uscita.

Cronologia messaggi

Riproduci i messaggi recenti da uno storage durevole così i client si riprendono senza intoppi dopo le riconnessioni.

Autenticazione con token

Genera token client di breve durata dal tuo backend con permessi a livello di canale per pubblicazione, sottoscrizione, presenza e cronologia.

Compatibile con Pusher

Parla il protocollo Pusher, quindi le app pusher-js e Laravel Echo si connettono con una modifica di configurazione invece di una riscrittura.

Sincronizzazione Database

Fai lo streaming delle modifiche di Postgres direttamente ai client sottoscritti come query in tempo reale, niente polling e nessun codice glue.

L'intera integrazione è questione di poche righe:

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

Testato sul campo con giochi veri

Foony usa moltissimo Foony Realtime per la nostra chat e per gli aggiornamenti del database in tempo reale. Circa 1,5 milioni di giocatori al mese si affidano a foony.io per all'incirca 500 milioni di messaggi, e un gioco multiplayer risulta azzeccato solo quando questi arrivano veloci, in ordine ed esattamente una volta. Foony non sarebbe possibile senza l'affidabilità e la convenienza di 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

Guardalo in azione in uno qualsiasi dei nostri giochi, poi ottieni la stessa infrastruttura con una dashboard e un SDK su foony.io.

Bulby, la mascotte di Foony

Provalo sul tuo traffico

Il piano gratuito include 9 milioni di messaggi al mese. Nessuna carta di credito richiesta.

Domande frequenti

Cos'è WebSockets as a service?

Una piattaforma gestita che si occupa delle connessioni persistenti tra la tua app e i suoi utenti. Invece di gestire i tuoi server WebSocket, i tuoi client si connettono al servizio, il tuo backend pubblica i messaggi sui canali tramite un SDK o REST, e il servizio si occupa di consegna, riconnessioni, presenza e cronologia.

In cosa Foony Realtime è diverso da Pusher o Ably?

Copre la stessa superficie fondamentale di canali, presenza, cronologia e autenticazione a token, e parla il protocollo Pusher, quindi funziona come alternativa drop-in a Pusher. La differenza sta nell'origine e nel prezzo. È stato costruito per foony.com, il nostro sito di giochi multiplayer, e il piano gratuito include 9 milioni di messaggi al mese.

Devo riscrivere la mia app per passare?

Di solito no. Le app pusher-js e Laravel Echo possono puntare a Foony Realtime con una modifica alla configurazione. I nuovi progetti usano l' SDK @foony/realtime per JavaScript e TypeScript, l' SDK Go, oppure l' API REST da qualsiasi linguaggio.

Quanto costa?

Il piano gratuito include 9 milioni di messaggi al mese. I piani a pagamento aggiungono capacità mensile, e l'utilizzo oltre il tuo piano viene fatturato per milione di messaggi. I numeri aggiornati sono su foony.io/pricing.

8 Ball Pool online multiplayer billiards icon