WebSockets as a Service

La plateforme temps réel managée derrière le chat et les données en direct de foony.com, ouverte à tous les développeurs sur foony.io.

Un service WebSocket maintient une connexion persistante entre tes serveurs et chaque client connecté, si bien que les mises à jour arrivent au moment où elles se produisent, et non au prochain rafraîchissement de page. Foony Realtime s'occupe des parties ingrates à ta place : connexions, reconnexions, diffusion, présence et historique des messages, le tout derrière un petit SDK.

1.5Mjoueurs servis chaque mois
500M+messages livrés par mois
<100msobjectif de diffusion p95

Essaie en direct

Tout ce qui suit fonctionne dès maintenant sur le service de production à realtime.foony.io. Ouvre cette page dans un second onglet et regarde les deux se refléter l'un l'autre.

Présence et curseurs en direct

Tous ceux qui lisent cette page apparaissent ici, directement depuis la présence du channel. Les positions des curseurs voyagent sous forme de messages éphémères, le niveau à faible latence qui ne passe pas du tout par le stockage.

1 ici maintenantBouge ta souris. Clique pour faire coucou.

Chat en direct

C'est le vrai chat de cette page, le même salon @foony/chat sur lequel tournent toutes les pages et tous les salons de jeu Foony. Les messages arrivent sur un seul channel avec historique, et les envois passent par le serveur de Foony pour que chaque message soit modéré.

Personne n'a rien dit récemment. Sois le premier à briser la glace.

Synchronisation de base de données

Voici le pipeline de production de foony.com : tape n'importe quel nom d'utilisateur Foony et sa ligne Postgres publique arrive en streaming via le WebSocket du site, puis se met à jour en direct pendant qu'il joue. Pas de polling, pas de point d'API.

Recherche en cours…

Pourquoi les équipes achètent des WebSockets au lieu de les construire

  • Des reconnexions qui ne perdent aucun message. Les navigateurs coupent la connexion en permanence. Les clients reprennent là où ils s'étaient arrêtés grâce au rejeu de l'historique, donc une connexion instable ne signifie pas des messages manqués.
  • Diffusion à grande échelle. Délivrer un message à cent mille abonnés en moins d'une seconde est un problème ardu de systèmes distribués. Ici, c'est tout le boulot.
  • Présence sans comptabilité. Vois qui est en ligne maintenant et réagis aux événements d'arrivée, de mise à jour et de départ, sans écrire ta propre logique de heartbeat et de timeout.
  • Aucune planification de capacité. Les serveurs WebSocket sont à état, donc les faire monter en charge soi-même implique du drainage, du sharding et du routage collant. Un service géré, c'est le bipeur de quelqu'un d'autre.

Ce que tu obtiens avec Foony Realtime

Canaux et pub/sub

Diffuse des événements nommés via WebSocket ou REST vers des canaux dédiés à ton appli (par ex. chat:lobby) avec une sémantique de livraison prévisible.

Présence

Suis qui est en ligne, rafraîchis l'appartenance automatiquement et réagis aux événements d'arrivée, de mise à jour et de départ.

Historique des messages

Rejoue les messages récents depuis un stockage durable pour que les clients récupèrent proprement après une reconnexion.

Authentification par token

Génère des tokens client à courte durée de vie depuis ton backend avec des permissions de publication, d'abonnement, de présence et d'historique au niveau du canal.

Compatible Pusher

Parle le protocole Pusher, donc les applis pusher-js et Laravel Echo se connectent avec un simple changement de configuration plutôt qu'une réécriture.

Synchronisation de base de données

Diffuse les changements Postgres directement vers les clients abonnés sous forme de requêtes en direct, sans polling et sans code de liaison.

Toute l'intégration tient en quelques lignes :

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

Éprouvé sur de vrais jeux

Foony utilise énormément Foony Realtime pour notre chat et nos mises à jour de base de données en temps réel. Environ 1,5 million de joueurs par mois comptent sur foony.io pour à peu près 500 millions de messages, et un jeu multijoueur ne donne la bonne impression que lorsque ceux-ci arrivent vite, dans l'ordre et exactement une seule fois. Foony ne serait pas possible sans la fiabilité et le bon rapport qualité-prix de 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

Vois-le à l'œuvre dans n'importe lequel de nos jeux, puis obtiens la même infrastructure avec un tableau de bord et un SDK sur foony.io.

Bulby, la mascotte de Foony

Teste-le sur ton propre trafic

L'offre gratuite comprend 9 millions de messages par mois. Aucune carte bancaire requise.

Questions fréquentes

Qu'est-ce que les WebSockets en tant que service ?

Une plateforme managée qui prend en charge les connexions persistantes entre ton appli et ses utilisateurs. Au lieu de faire tourner tes propres serveurs WebSocket, tes clients se connectent au service, ton backend publie des messages sur des canaux via un SDK ou en REST, et le service gère la livraison, les reconnexions, la présence et l'historique.

En quoi Foony Realtime diffère-t-il de Pusher ou Ably ?

Il couvre la même base essentielle de canaux, présence, historique et authentification par jeton, et il parle le protocole Pusher, ce qui en fait une alternative à Pusher prête à l'emploi. La différence, c'est l'origine et le prix. Il a été conçu pour foony.com, notre propre site de jeux multijoueurs, et l'offre gratuite comprend 9 millions de messages par mois.

Dois-je réécrire mon appli pour changer ?

Généralement non. Les applis utilisant pusher-js et Laravel Echo peuvent pointer vers Foony Realtime avec un simple changement de configuration. Les nouveaux projets utilisent le SDK @foony/realtime pour JavaScript et TypeScript, le SDK Go, ou l' API REST depuis n'importe quel langage.

Combien ça coûte ?

L'offre gratuite comprend 9 millions de messages par mois. Les forfaits payants ajoutent de la capacité mensuelle, et l'usage au-delà de ton forfait est facturé au million de messages. Les chiffres actuels sont sur foony.io/pricing.

8 Ball Pool online multiplayer billiards icon