Cells : compteur partagé
Un même compteur pour tous les visiteurs. Ajoutez un point ici : les autres onglets le reçoivent en direct, et la valeur reste disponible après une reconnexion.
Essayez à deux onglets
Compteur partagé
Connexion…
Gardez les deux onglets visibles, puis cliquez dans l’un d’eux. Le compteur de l’autre se met à jour sans recharger la page.
Note
Pilote public : ce compteur contient uniquement des données de démonstration. Tous les visiteurs partagent la même valeur. Les ajouts sont espacés d’au moins 250 ms ; huit connexions simultanées sont disponibles.
Ce qui s’exécute
Chaque ajout s’exécute dans une transaction SQLite. La diffusion WebSocket part après la validation de la transaction. Le client relit la valeur lorsqu’il détecte des événements manqués.
import { cellClient } from "@bext-stack/framework/cells/client";
const counter = cellClient("Pilot", "pilot", {
url: `wss://${location.host}/cells-pilot`, // Demo edge mount
onMessage: render, // Initial snapshot on each connection
onGap: () => refreshCount(),
});
counter.on("changed", render);
await counter.action("increment");
// Inside the cell's increment action:
// (The public demo also checks the fixed key and write cooldown.)
c.sql.exec("UPDATE counter SET n = n + 1 WHERE id = 1");
const { n } = c.sql.one("SELECT n FROM counter WHERE id = 1");
c.broadcast("changed", { n }); // Delivered after commit
return { n };