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

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

stable

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

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

Classes (6)#

ChannelFrame#

class ChannelFrame

Frame d’UNE publication diffusée à plusieurs abonnés, encodée au plus une fois par codec (ADR-0022 §2) : un canal suivi par des connexions texte et CBOR paie deux encodages, jamais un par connexion. L’encodage est paresseux — un codec qu’aucun abonné n’utilise ne coûte rien.

ContractRealtimeControllerBase#

abstract class ContractRealtimeControllerBase<C extends IRealtimeContract> extends RealtimeController<ContractServerEmit<C>, ContractServerActions<C>, ContractServerListen<C>>

Socle commun des deux formes de ContractRealtimeController : l’étiquette de contrat et les canaux annoncés. Les actions y gardent le défaut de la base ({}) — un contrat SANS serverMethods n’a rien à écrire.

ContractRealtimeControllerStrict#

abstract class ContractRealtimeControllerStrict<C extends IRealtimeContract> extends ContractRealtimeControllerBase<C>

Forme stricte de ContractRealtimeController, retenue quand le contrat déclare des serverMethods : realtimeActions() y devient ABSTRAITE et typée par le contrat — la seule construction qui fait d’une méthode OUBLIÉE une erreur de compilation (un décorateur ne voit jamais la classe entière).

RealtimeController#

abstract class RealtimeController<Emit extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap, Listen extends EventsMap = DefaultEventsMap> extends Controller implements IRealtimeController

RealtimeController — base d’un endpoint WebSocket temps réel SERVEUR (JSON-RPC 2.0).

RealtimeHub#

class RealtimeHub

RealtimeHub — broker temps réel PAR INSTANCE (1 pod = 1 process = 1 hub local).

ServerRealtimeSocket#

class ServerRealtimeSocket<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap> implements IRealtimeSocket<Emit, Listen>

L4 — façade serveur « la socket Nodefony ». Un handle SERVEUR qui implémente le contrat ISOMORPHE IRealtimeSocket au-dessus du RealtimeHub : un service back code comme une page front (publish / subscribe / on / channel) — il tient UN handle, ignore le fan-out et le backplane.

Fonctions (6)#

buildOwnHealth#

function buildOwnHealth(): IRealtimeHealth

buildRealtimeHealth#

function buildRealtimeHealth(): Promise<IRealtimeHealth | IRealtimeClusterHealth>

Construit la santé de la socket servie par l’endpoint/le canal nodefony:socket : la vue POD agrégée si la sonde cluster est branchée et a reçu un snapshot du master (Phase 4c, push), sinon la vue per-instance (mono-process, sonde désactivée, ou cold start). Lecture pure, jamais throw. Async pour matcher la signature des tickers broker.

createRealtimeAdminApi#

function createRealtimeAdminApi(): IAdminApi

Construit le producteur IAdminApi de la socket (namespace "realtime").

createSyslogUplinkHandler#

function createSyslogUplinkHandler(opts: SyslogUplinkHandlerOptions): RealtimeInboundHandler

Fabrique le handler du canal montant des journaux.

getRealtimeHub#

function getRealtimeHub(): RealtimeHub
function getRealtimeHub<C extends IRealtimeContract>(): IContractRealtimeHub<C>

Renvoie le hub realtime du process (singleton lazy) — forme LIBRE : tout nom de canal, toute charge objet. Renvoie le hub realtime du process lu à travers le contrat C : la diffusion d’un service, d’un job ou d’une boucle de jeu est vérifiée par le contrat partagé avec le navigateur. Même objet que la forme libre : 0 octet, 0 ns.

serverSocket#

function serverSocket<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap>(): ServerRealtimeSocket<Emit, Listen, Actions>

Crée un handle serveur (ServerRealtimeSocket) sur le hub courant.

Constantes (7)#

ANONYMOUS_REALTIME_TOKEN#

const ANONYMOUS_REALTIME_TOKEN: IRealtimeToken

Token realtime ANONYME — fallback Zero Trust quand aucun matcher IRealtimeAuthenticatorMatcher ne capture le handshake.

ANONYMOUS_SUBSCRIBER_IDENTITY#

const ANONYMOUS_SUBSCRIBER_IDENTITY: ISubscriberIdentity

Identité d’admission de l’ANONYME — gelée et partagée par toutes les connexions non authentifiées (0 allocation par connexion).

ContractRealtimeController#

const ContractRealtimeController: ContractRealtimeControllerConstructor

L’instance d’un contrôleur de contrat : forme stricte si C déclare des serverMethods, socle sinon. Base d’un contrôleur qui IMPLÉMENTE un contrat temps réel — la porte du serveur. Le contrat s’écrit UNE fois, sur extends ; la direction du serveur en est dérivée (il émet serverToClient, écoute clientToServer, appelle clientMethods) et il DOIT servir chaque méthode de serverMethods.

MAX_CLIENT_SEVERITY#

const MAX_CLIENT_SEVERITY = 3

Sévérité la plus grave qu’un client puisse obtenir (3 = ERROR). Au-dessus vivent CRITIC, ALERT et EMERGENCY — des niveaux d’exploitation qu’un onglet ne décide pas.

RESERVED_SYSTEM_PREFIXES#

const RESERVED_SYSTEM_PREFIXES: readonly [ "nodefony:" ]

Namespace de canaux RÉSERVÉ À LA PLATEFORME — un seul préfixe, nodefony:.

SLOW_CONSUMER_BYTES#

const SLOW_CONSUMER_BYTES: number

Seuil d’alerte slow-consumer (octets de bufferedAmount). Au-delà, la connexion est comptée comme « lente » par la sonde (PAS encore de drop/close — la sonde MESURE avant qu’on optimise : stringify unique → seuil de drop → coalescing). 1 MiB = websocket.maxPayload par défaut : une file qui dépasse une frame max pleine est déjà anormale pour des canaux d’ÉTAT (latest-wins).

isReservedSystemChannel#

const isReservedSystemChannel: typeof isPlatformChannel

Le canal appartient-il au namespace réservé à la plateforme ?

Interfaces (2)#

IContractRealtimeHub#

interface IContractRealtimeHub<C extends IRealtimeContract> extends Omit<RealtimeHub, "publish" | "publishToUser">

Le hub lu à travers le contrat C : mêmes méthodes que RealtimeHub, mais publish n’accepte que les canaux de serverToClient, chacun avec la charge qu’il déclare. C’est le MÊME objet que le hub libre — une vue de type, sans un octet ni une instruction de plus.

SyslogUplinkHandlerOptions#

interface SyslogUplinkHandlerOptions

Types (7)#

ChannelFactory#

type ChannelFactory = (channel: string, publish: RealtimePublish) => () => void | null

Fabrique le provider PARTAGÉ d’un canal (listener/ticker qui pousse via publish). Appelée UNE fois, au 1ᵉʳ abonné. Renvoie son dispose (appelé au dernier désabonné) ou null si le canal est inconnu. Le provider doit capturer des deps long-lived (kernel/syslog/broker, valeurs simples) — JAMAIS la connexion qui a déclenché la création (elle peut fermer alors que le provider partagé survit).

ChannelFrameBuilder#

type ChannelFrameBuilder = (payload: unknown) => unknown

Fabrique la frame protocolaire d’un canal (l’objet, pas ses octets), fournie par l’abonné : le hub ignore tout du protocole. Appelée au plus une fois par publication, jamais par abonné ; l’encodage, lui, se fait une fois par codec.

ChannelSink#

type ChannelSink = (payload: unknown, frame?: ChannelFrame) => void

Sink d’un canal : pousse une charge vers UNE connexion abonnée (son peer.notify). 1 sink = 1 connexion. Le hub fan-out la charge à tous les sinks d’un canal.

ClientSeverity#

type ClientSeverity = 3 | 4 | 5 | 6 | 7

Les seules sévérités qu’une entrée cliente peut porter, une fois plafonnée.

ContractPolicyNames#

type ContractPolicyNames<C extends IRealtimeContract> = ContractActionNames<ContractServerMethods<C>> | EventNames<ContractServerEmit<C>> | EventNames<ContractClientEmit<C>>

Noms qu’un contrat déclare et qu’une politique peut garder : ses méthodes serveur et les canaux de ses deux directions. Un canal déclaré par gabarit (user:${string}) admet aussi son motif (user:*). Direction non déclarée : tout nom.

ContractRealtimeMethodHandlers#

type ContractRealtimeMethodHandlers<C extends IRealtimeContract> = { [K in ContractActionNames<ContractServerMethods<C>>]: TypedRpcActionHandler<ContractServerMethods<C>, K>; }

Table COMPLÈTE des méthodes que le serveur doit au contrat : une entrée par nom de serverMethods, chacune recevant ses paramètres lus par Jsonify et rendant le résultat déclaré. Une méthode oubliée, un nom hors contrat ou une forme fausse ne compilent pas.

RealtimeContractOf#

type RealtimeContractOf<T> = T extends abstract new (...args: never[]) => { readonly [contractType]?: infer C; } ? unknown extends C ? never : C extends IRealtimeContract ? C : never : never

Le contrat qu’une classe de contrôleur implémente, lu sur son étiquette de type ; never pour un contrôleur sans contrat.


← Toutes les références d’API