Référence d'API — @nodefony/realtime — racine
stable
Documentation › Référence d’API › @nodefony/realtime › racine
Générée depuis les déclarations de types publiées de
@nodefony/realtime10.0.0-beta.6 : exactement ce que reçoit une application qui l’installe. Cette page n’existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.
@nodefony/realtime#
import { … } from "@nodefony/realtime" — 9 symboles.
Classes (2)#
Realtime#
class Realtime extends Module<IRealtimeConfig>
static critical: boolean— Module optionnel : un échec de son boot ne tue jamais le process (résilience Ph.3).constructor(kernel: Kernel)configSchema(): unknown— JSON Schema de la config realtime → data plane admin (config riche Studio).onKernelRegister(): Promise<this>— Validation Zod de la config racine merge au boot (convention figée 2026-05-28, cf [[feedback_config_validation_zod]]) — via le builderdefineRealtimeConfig(source uniquenodefony/config/config.ts…onKernelBoot(): Promise<this>— PhaseonBoot(avant lemountAllde framework dansonReady) — enregistre le producteur admin de la socket Nodefony (/nodefony/realtime/api/*) sur le brokerframework/AdminBroker.onKernelReady(): Promise<this>— PhaseonReady— inscrit au hub les politiques de canal de TOUS les contrôleurs temps réel connus, et résout leurs classes d’admission, avant que le moindre serveur n’écoute.
default#
class Realtime extends Module<IRealtimeConfig>
static critical: boolean— Module optionnel : un échec de son boot ne tue jamais le process (résilience Ph.3).constructor(kernel: Kernel)configSchema(): unknown— JSON Schema de la config realtime → data plane admin (config riche Studio).onKernelRegister(): Promise<this>— Validation Zod de la config racine merge au boot (convention figée 2026-05-28, cf [[feedback_config_validation_zod]]) — via le builderdefineRealtimeConfig(source uniquenodefony/config/config.ts…onKernelBoot(): Promise<this>— PhaseonBoot(avant lemountAllde framework dansonReady) — enregistre le producteur admin de la socket Nodefony (/nodefony/realtime/api/*) sur le brokerframework/AdminBroker.onKernelReady(): Promise<this>— PhaseonReady— inscrit au hub les politiques de canal de TOUS les contrôleurs temps réel connus, et résout leurs classes d’admission, avant que le moindre serveur n’écoute.
Constantes (1)#
BROWSER_ORIGIN#
const BROWSER_ORIGIN = "browser"
moduleName porté par une entrée de journal venue d’un NAVIGATEUR.
Interfaces (6)#
IBackplaneInfo#
interface IBackplaneInfo
Carte d’identité d’un backplane — descripteur de DONNÉE (pas un log) décrivant l’état du fond de panier. Source unique alimentant trois sorties cohérentes : la ligne stdout au boot, le champ backplane de la sonde (/api/health) et la vue Studio. Réutilisable par les tests / un agent IA sans dupliquer la connaissance « c’est quoi ce backplane ».
driver: string— Nom du driver (clé du registre).kind: string— Nature du transport.originId: string— Identité de CE pair (process/pod).crossPod: boolean—truesi le fan-out franchit les frontières de pod (multi-host).channel?: string— Canal/topic de transport, si applicable (canal Redis, topic Kafka).sealed?: boolean— Les messages sont-ils scellés (authenticité de l’émetteur vérifiée) ?sealRejectedTotal?: number— Messages reçus du bus dont le sceau est refusé — unité : un message reçu d’un exemplaire, jeté parce que son sceau ne se vérifie pas (ADR-0021 S6, S9).queue?: IBackplaneQueueInfo— État de la file d’envoi vers le bus (octets en vol, seuil, jetés).bytes?: boolean— Les octets d’une charge traversent-ils le bus intacts (IBackplane.enableBytes) ?
IChannelPolicy#
interface IChannelPolicy
Politique d’autorisation d’un canal temps réel — ce qu’il faut satisfaire pour s’y abonner (subscribe) ou y pousser (canal entrant), déclarée par @RealtimeChannel(nom, politique).
readonly authenticated?: boolean— Exige une connexion authentifiée (jeton non anonyme).readonly roles?: readonly string[]— Un de ces rôles suffit (évalué AVEC la hiérarchie de rôles, côté sécurité).readonly scopes?: readonly string[]— Un de ces scopes suffit (axe API : JWT, clé d’API ; une session n’en porte pas).readonly allow?: ChannelAllow— Règle d’admission PAR ABONNÉ, demandée une fois ausubscribeaprès les exigences ci-dessus : une flèche qui ne lit que ses arguments, ou une classe@injectablerésolue au démarrage (contrat : `ICh …readonly anonymous?: boolean— Un canal àallowrefuse l’anonyme d’office ;truele lui présente (who.id === null).
IRealtimeChannelStat#
interface IRealtimeChannelStat
Stat per-canal du hub (fan-out).
channel: string— Nom du canal (suffixe:<ms>de granularité inclus).subscribers: number— Abonnés locaux vivants (sinks) — instantané.messages: number— Publications cumulées sur ce canal (monotone) → débit dérivé côté lecteur.
IRealtimeClusterHealth#
interface IRealtimeClusterHealth
Vue POD agrégée de la socket (mode cluster) — la santé de TOUS les workers du pod consolidée. Servie par n’importe quel worker via l’endpoint santé quand le master pousse le snapshot agrégé (sinon on retombe sur IRealtimeHealth per-instance).
cluster: true— Discriminant : vue agrégée multi-worker (≠IRealtimeHealthper-instance).ts: number— Horodatage du snapshot agrégé (ms epoch).instanceCount: number— Nombre de workers présents dans l’agrégat.instances: IRealtimeHealth[]— Santé par worker (détail per-instance pour le drill-down).totals: { channelCount: number; publishTotal: number; fanoutTotal: number; inboundTotal: number; ingressRejectedTotal: number; localOnlyTotal: number; connectionCount: number; bytesSentTotal: number; …— Totaux pod (sommes des scalaires ; backpressure max = pire worker).
IRealtimeHealth#
interface IRealtimeHealth extends IRealtimeProbe
Snapshot enrichi de l’identité d’instance — santé per-instance d’un worker/pod.
instanceId: string— Identifiant de CE process/pod (per-instance).process?: IProcessHealth— Santé PROCESS du worker (CPU/mém/event-loop) — additif : la grille « salle des machines » de la vue pod litinstances[].processpar worker.rich?: IProcessRich— Sonde process riche (GC/heap-spaces/handles/ELU active-idle/ctx-switches) — présente UNIQUEMENT pendant un drill-down de CE worker (le master a envoyénf:probe:enrichà ce pid).orm?: IOrmLeanHealth— Santé ORM lean du worker (connecteurs/requêtes/erreurs/latence EWMA) — additif, commeprocess.errors?: IInstanceErrorHealth— Compteurs d’erreurs Syslog du worker (ERROR/CRITIC cumulés) — additif.backplaneDrivers?: string[]— Drivers de backplane enregistrés dans ce process (clés du registre ouvert : natifs + ceux qu’une application a ajoutés parregisterBackplaneDriver).ormRich?: unknown— Diagnostic ORM riche du worker (par connecteur : ping/latence/stockage/pool + flux requêtes) — blob OPAQUE{ health, flow }produit par le driver, présent UNIQUEMENT pendant un drill ORM de CE w …
IRealtimeProbe#
interface IRealtimeProbe
Snapshot PUR du hub (sans identité process) — ce que renvoie RealtimeHub.probe(). Per-instance/pod (cloud-native) ; l’agrégat multi-pod = backplane Redis / Prometheus.
ts: number— Horodatage du snapshot (ms epoch) — base du calcul de débit côté lecteur.channels: IRealtimeChannelStat[]— Canaux actifs (≥ 1 abonné) avec abonnés + publications cumulées.channelCount: number— Nombre de canaux actifs (= 1 provider/canal/pod).publishTotal: number— Appelspublishcumulés (monotone).fanoutTotal: number— Livraisons cumulées (publish× abonnés) — vrai coût de fan-out (monotone).inboundTotal: number— Frames entrantes full-duplex cumulées (canaux gated SIP/bridge) (monotone).ingressRejectedTotal: number— Messages d’ingress backplane REFUSÉS (canal non déclaré broadcast) — monotone.localOnlyTotal: number— Publications restées sur CE serveur alors qu’un bus est branché — canal non déclaré diffusable (@RealtimeBroadcast) — monotone ; toujours 0 sans bus.systemFloorDeniedTotal: number— Abonnements clients REFUSÉS par le plancher des canaux de plateforme — monotone.sealRejectedTotal: number— Messages du bus REFUSÉS parce que leur sceau ne se vérifie pas — monotone, unité : un message reçu d’un exemplaire.frameRateRejectedTotal: number— Trames entrantes ÉCARTÉES par la borne de débit, avant tout décodage — monotone, unité : une trame reçue.allowTimedOutTotal: number— Appels d’allowrestés SANS RÉPONSE dansallowTimeoutMs— monotone, unité : un appel d’allow.allowSaturatedTotal: number— Demandes d’abonnement renduesunavailableSANS appel d’allow— monotone, unité : une demande.authenticateTimedOutTotal: number— Poignées de main fermées en1013faute d’authentification dansauthenticateTimeoutMs— monotone, unité : une poignée de main.binaryDiscardedTotal: number— Trames BINAIRES reçues et écartées faute de lecteur — monotone, unité : une trame reçue.malformedDiscardedTotal: number— Trames reçues et écartées parce qu’illisibles par le codec de la connexion — JSON invalide, CBOR tronqué — monotone, unité : une trame reçue.connectionCount: number— Connexions realtime vivantes.bytesSentTotal: number— Somme cumulée des octets envoyés, toutes connexions, fermées comprises (monotone).messagesSentTotal: number— Somme cumulée des frames envoyées, toutes connexions, fermées comprises (monotone).backpressure: { maxBufferedAmount: number; totalBufferedAmount: number; slowConsumers: number; drops: number; }— Backpressure agrégée (instantanée) — risque #1.backplane?: IBackplaneInfo— Carte d’identité du backplane effectif (driver, transport, cross-pod, canal).