Nodefony 10.0.0-beta.5
Framework Node.js fullstack — HTTP & WebSocket, même contexte

Référence d'API — @nodefony/realtime — backplane

stable

Documentation › Référence d’API › @nodefony/realtime › backplane

Générée depuis les déclarations de types publiées de @nodefony/realtime 10.0.0-beta.5 : 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" — 18 symboles.

Classes (3)#

ClusterBackplane#

class ClusterBackplane implements IBackplane

Backplane IPC cross-process (Phase 3) — implémentation worker-side du port IBackplane dans un cluster Node natif, où les workers ne se parlent qu’à travers le master-gateway (un worker ne peut envoyer qu’au master via IPC).

LoopbackBackplane#

class LoopbackBackplane implements IBackplane

Backplane mono-process no-op — implémentation de RÉFÉRENCE du port IBackplane quand il n’existe aucun pair (1 process = 1 pod).

RedisBackplane#

class RedisBackplane implements IBackplane

Backplane Redis pub/sub (P13.5) — implémentation du port IBackplane pour le fan-out realtime cross-pod (multi-host), là où le ClusterBackplane ne couvrait que les workers d’un même pod (IPC). Drop-in : le hub ne change pas, seul le driver branché change.

Fonctions (6)#

createRedisServiceTransport#

function createRedisServiceTransport(publisher: IRedisPublisher, subscriber: IRedisSubscriber): IRedisBackplaneTransport

getBackplaneDriver#

function getBackplaneDriver(name: string): BackplaneFactory

Fabrique d’un driver par nom, ou undefined si inconnu.

listBackplaneDrivers#

function listBackplaneDrivers(): string[]

Noms des drivers enregistrés (introspection / Studio / tests).

registerBackplaneDriver#

function registerBackplaneDriver(name: string, factory: BackplaneFactory): void

Enregistre (ou remplace) la fabrique d’un driver backplane. Appelé par les drivers natifs au chargement du module, et par l’utilisateur pour ses drivers custom (NATS, Pulsar, RabbitMQ…).

resolveBackplaneOriginId#

function resolveBackplaneOriginId(): string

Résout l’identifiant d’origine d’un backplane — l’étiquette que l’anti-écho compare pour jeter les messages qui reviennent à leur émetteur.

resolveRedisChannel#

function resolveRedisChannel(namespace?: string): string

Construit le canal pub/sub effectif : nodefony:realtime:<namespace>, ou la base seule si aucun namespace n’est résolu (compat mono-app). Deux déploiements de la MÊME app sur un Redis partagé (staging + prod) ont le même nom dérivé → y poser un backplane.namespace EXPLICITE distinct.

Constantes (2)#

REDIS_RT_CHANNEL#

const REDIS_RT_CHANNEL = "nodefony:realtime"

BASE du canal Redis dédié transportant les enveloppes realtime entre pods. Un seul canal pub/sub par app (les canaux logiques voyagent DANS l’enveloppe, comme le channel IPC du ClusterBackplane) → 1 SUBSCRIBE au boot, pas de (dés)abonnement Redis dynamique par canal applicatif.

processIpcTransport#

const processIpcTransport: IClusterBackplaneTransport

Transport de production : process.send (émission) + process.on("message") (réception). Standalone — utilisable tel quel. En vrai câblage cluster (Phase 3c), un transport branché sur l’event kernel onMessage (déjà alimenté par Kernel.initCluster) est préféré pour éviter un 2ᵉ listener + le log par message.

Interfaces (6)#

ClusterBackplaneEnvelope#

interface ClusterBackplaneEnvelope extends IBackplaneMessage

Enveloppe IPC d’une publication realtime = IBackplaneMessage + discriminant. Sérialisée une fois par process.send/worker.send (structuredClone IPC) → le payload doit rester structurellement clonable (cf contrat IBackplane).

IBackplaneFactoryContext#

interface IBackplaneFactoryContext

Contexte passé à une fabrique de backplane : tout ce dont un driver peut avoir besoin pour se construire (accès kernel/container/log via le Module, identité du pair, rôle dans la topologie, config validée). Une fabrique ne démarre PAS le backplane (start() est appelé par le wiring) — elle le construit ou renvoie null (driver inactif dans ce contexte, ex. loopback / cluster hors worker → le hub reste local).

IClusterBackplaneTransport#

interface IClusterBackplaneTransport

Transport IPC du backplane cluster — abstrait process.send / la réception des messages relayés par le master, derrière un seam injectable (même pattern que IClusterRuntime côté ClusterManager). Permet de prouver le routage + l’anti-echo sans forker de process réel.

IRedisBackplaneTransport#

interface IRedisBackplaneTransport

Transport pub/sub du backplane Redis — abstrait PUBLISH / SUBSCRIBE derrière un seam injectable (même pattern que IClusterBackplaneTransport). Permet de prouver le routage + l’anti-echo sans Redis (bus en mémoire dans les tests), et de ne PAS coupler @nodefony/realtime à la lib redis ni au module @nodefony/redis (cf createRedisServiceTransport, le seul point couplé).

IRedisPublisher#

interface IRedisPublisher

Client Redis publisher — surface structurelle minimale (compatible RedisClientType v5). Typage structurel volontaire : évite d’ajouter redis en dépendance de @nodefony/realtime.

IRedisSubscriber#

interface IRedisSubscriber

Client Redis subscriber dédié — surface structurelle minimale (compatible RedisClientType v5). Un client abonné ne peut plus émettre de commandes normales (protocole Redis) → publisher et subscriber sont 2 connexions distinctes (cf @nodefony/redis : connexions publish / subscribe).

Types (1)#

BackplaneFactory#

type BackplaneFactory = (ctx: IBackplaneFactoryContext) => IBackplane | null | Promise<IBackplane | null>

Fabrique d’un backplane pour un driver donné. Retourne l’instance à brancher, ou null si le driver est inactif dans ce contexte (mono-process, mauvais rôle, infra absente — le wiring laisse alors le hub local). Peut être async (ex. lecture d’un service dont l’init est asynchrone).


← Toutes les références d’API