Événements & écouteurs

Découplez « quelque chose s'est produit » de « ce qu'il faut faire en réponse ». Un createEventBus typé : on enregistre des écouteurs, puis un seul emit les déclenche tous (écouteurs async inclus). Ici, l'inscription d'un utilisateur diffuse un événement à trois écouteurs indépendants.

Astuce
Le bus est en mémoire et par isolat V8 : enregistrez les écouteurs au niveau du module (une fois par isolat) et émettez dans la même requête. Pour une diffusion durable inter-processus, utilisez la file SDK ou realtime.

Simuler une inscription

Déclenchez l'événement pour voir les écouteurs réagir.

src/app/examples/events/page.tsxTSX
import { createEventBus } from "@bext-stack/framework/events";

type AppEvents = {
  "user.registered": { id: string; email: string };
  "order.paid": { orderId: string; amount: number };
};
const bus = createEventBus<AppEvents>();

// Decoupled listeners — the registration flow doesn't know about them.
bus.on("user.registered", (u) => sendWelcome(u.email));
bus.on("user.registered", (u) => provisionWorkspace(u.id));
bus.on("user.registered", (u) => trackSignup(u.id));

// One line fans out to all three (awaits async listeners):
await bus.emit("user.registered", { id, email });