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

Référence d'API — nodefony/client — realtime

stable

Documentation › Référence d’API › nodefony › client-realtime

Générée depuis les déclarations de types publiées de nodefony 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/client#

import { … } from "nodefony/client" — 58 symboles.

Classes (3)#

AdaptiveRate#

class AdaptiveRate

BrowserWsTransport#

class BrowserWsTransport implements IRealtimeTransport

BrowserWsTransport — transport IRealtimeTransport pour le navigateur : wrap d’un WebSocket natif. Volontairement « bête » : il ouvre/envoie/ferme et relaie les events. L’orchestration (reconnect, backoff, heartbeat, state machine) vit AU-DESSUS dans NodefonySocket — qui crée un transport NEUF à chaque tentative.

NodefonySocket#

class NodefonySocket<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap, Actions extends ActionsMap = DefaultActionsMap, Routes extends RoutesMap = RoutesMap> implements IRealtimeSocket<Emit, Listen>, IRealtimePeer<Emit, Actions>

Socket cliente de Nodefony : une connexion WebSocket JSON-RPC 2.0 vers le serveur temps réel de l’application, qui rétablit la liaison après une coupure.

Fonctions (21)#

adaptiveRebindKey#

function adaptiveRebindKey(base: string, desiredMs: number, enabled?: boolean): string

Clé de re-liaison d’un canal en cadence adaptative.

bindAdaptiveChannel#

function bindAdaptiveChannel(socket: IRealtimeSocket, base: string, handler: RealtimeHandler, options: BindAdaptiveOptions): AdaptiveChannelBinding

Câble un AdaptiveRate à une socket réelle : abonne base à sa cadence désirée, mesure la gigue d’arrivée, et ré-abonne automatiquement à une cadence plus grossière en cas de famine (MD) puis plus fine quand c’est sain (AI). Les frames continuent d’être livrées à handler à travers les changements de cadence.

closeCodeToNotice#

function closeCodeToNotice(code: number, reason?: string): NodefonyNotice | null

Traduit un code de fermeture WebSocket (RFC 6455 §7.4) en NodefonyNotice — pendant CLIENT du toWsCloseCode serveur (@nodefony/http). Pur, sans état, donc trivialement testable et réutilisable.

connectShared#

function connectShared(opts: ConnectSharedOptions): SharedConnection

Résout la socket partagée d’une adresse — ou adopte celle qu’on lui donne — et rend de quoi la démarrer sans jamais la couper.

describeCodec#

function describeCodec(protocol: string): string

Le format des frames d’une connexion, mis en mots — la MÊME phrase dans la console, la vignette d’une page, la barre de debug et le diagnostic du noyau.

describeSocket#

function describeSocket(snapshot: SocketSnapshot, now?: number): SocketDetailRow[]

Ce que le client sait de SA socket, mis en mots — la même description pour le tableau de la console du navigateur et pour la vignette qu’une page affiche.

isLocalEvent#

function isLocalEvent(event: string): event is LocalEvent

Vrai si event est un événement local du client (jamais un canal réseau).

observeAdaptiveChannel#

function observeAdaptiveChannel<L extends EventsMap, K extends EventNames<L>>(client: ChannelSocket<L>, base: K, emit: Emit<ChannelPayload<L, K>>, desiredMs: number, options?: AdaptiveObserveOptions): AdaptiveChannelBinding

Observe un canal d’ÉTAT en cadence adaptative (AIMD piloté par le client) : la cadence recule sous famine et remonte quand c’est sain, sans changement serveur. emit reçoit chaque frame à travers les changements de cadence.

observeChannel#

function observeChannel<L extends EventsMap, K extends EventNames<L>>(client: ChannelSocket<L>, channel: K, emit: Emit<ChannelPayload<L, K>>): Dispose

Observe un canal pub/sub : emit est appelé pour chaque message reçu.

observeChannelData#

function observeChannelData<L extends EventsMap, K extends EventNames<L>>(client: ChannelSocket<L>, channel: K, emit: Emit<ChannelPayload<L, K> | null>, initial?: ChannelPayload<L, K> | null): Dispose

Observe la dernière valeur reçue sur un canal — le cas le plus courant (dernière mesure d’un flux d’état). emit reçoit initial immédiatement, puis chaque nouvelle valeur : dernier arrivé gagne.

observeChannelStats#

function observeChannelStats(client: ObservableClient, channel: string, emit: Emit<MessageStats | null>): Dispose

Observe les statistiques d’un canal (débit, série du VU-mètre, total), rafraîchies par l’échantillonneur du client une fois par seconde. emit reçoit l’instantané courant immédiatement, puis à chaque échantillon.

observeIdentity#

function observeIdentity(client: ObservableClient, emit: Emit<RealtimeIdentity | null>): Dispose

Observe l’identité résolue par le serveur au welcome (null tant qu’aucun welcome n’est arrivé, et après un disconnect() volontaire). emit reçoit la valeur courante immédiatement, puis à chaque (re)welcome.

observeKernelIdentity#

function observeKernelIdentity(kernel: INodefonyKernel, emit: Emit<NodefonyKernelIdentity | null>): Dispose

Observe l’identité DÉCLARÉE au noyau par l’application (setIdentity) — null hors session. emit reçoit la valeur courante immédiatement, puis à chaque changement de COMPTE.

observeKernelState#

function observeKernelState(kernel: INodefonyKernel, emit: Emit<NodefonyKernelState>): Dispose

Observe l’état du noyau client (created → booting → ready → terminated). emit reçoit l’état courant immédiatement, puis à chaque transition.

observeNoticeLog#

function observeNoticeLog(client: ObservableClient, emit: Emit<NodefonyNotice[]>, opts?: ObserveNoticeLogOptions): Dispose

Observe un historique borné des dernières notices, filtrable par source : un journal léger des incidents temps réel, distinct des notifications éphémères. emit reçoit le tableau complet à chaque changement.

observeNotices#

function observeNotices(client: ObservableClient, emit: Emit<NodefonyNotice>): Dispose

Observe les notices normalisées du client : criticités qui cassent le temps réel (codes de fermeture RFC 6455 interprétés), erreurs poussées par le serveur, rétablissement de connexion. emit est appelé pour CHAQUE notice — de quoi brancher un centre de notifications.

observeReconnect#

function observeReconnect(client: ObservableClient, emit: Emit<RealtimeReconnectInfo>): Dispose

Observe les tentatives de reconnexion programmées par le back-off : numéro d’essai, délai retenu, échéance absolue. De quoi rendre un compte à rebours plutôt qu’un « déconnecté » muet.

observeSnapshot#

function observeSnapshot(client: ObservableClient, emit: Emit<SocketSnapshot>): Dispose

Observe l’instantané : emit reçoit la valeur courante immédiatement, puis à chaque échantillon du client (une fois par seconde), à chaque changement d’état et à chaque accueil qui change l’identité — les seuls moments où il peut avoir bougé de façon visible.

observeState#

function observeState(client: ObservableClient, emit: Emit<RealtimeState>): Dispose

Observe l’état de la connexion. emit reçoit l’état courant immédiatement, puis à chaque transition — une liaison n’a donc rien à initialiser à part.

observeSyslog#

function observeSyslog(client: ObservableClient, emit: Emit<unknown[]>, opts?: ObserveSyslogOptions): Dispose

Observe le journal du serveur : anneau borné, filtre de sévérité, et surtout le format coalescé du canal ({ logs: Pdu[], dropped }) autant que l’entrée unique. emit reçoit le tableau complet à chaque changement — une nouvelle référence, directement affichable.

socketSnapshot#

function socketSnapshot(client: SnapshotSource): SocketSnapshot

Lit l’instantané courant. Purement local : aucune trame n’est émise, rien n’est demandé au serveur — afficher cet état ne coûte donc rien au réseau.

Constantes (1)#

LOCAL_EVENTS#

const LOCAL_EVENTS: { readonly state: "__state__"; readonly identity: "__identity__"; readonly stats: "__stats__"; readonly notice: "__notice__"; readonly denied: "__denied__"; readonly subscribed: "__subscribed__"; readonly closed: "__closed__"; readonly reconnect: "__reconnect__"; readonly frame: "__frame__"; }

Événements locaux du NodefonySocket — jamais émis ni reçus par le réseau.

Interfaces (21)#

AdaptiveChannelBinding#

interface AdaptiveChannelBinding

Poignée du canal adaptatif — cadence courante + coupure.

AdaptiveRateOptions#

interface AdaptiveRateOptions

Réglages de la cadence adaptative. Seul intervalMs est requis.

AdaptiveScheduler#

interface AdaptiveScheduler

Planificateur du watchdog — injectable pour des tests déterministes (défaut : globals).

BindAdaptiveOptions#

interface BindAdaptiveOptions extends AdaptiveRateOptions

Réglages du câblage adaptatif = AdaptiveRateOptions + crochets/injection.

ConnectSharedOptions#

interface ConnectSharedOptions

Options de connectShared — le noyau, la socket déjà construite, ou l’adresse.

FromContractOptions#

interface FromContractOptions extends NodefonySocketOptions

Options de NodefonySocket.fromContract : celles du constructeur, plus le choix de la socket PARTAGÉE de la page.

IApiCallResult#

interface IApiCallResult<T = unknown>

Enveloppe d’un appel NodefonySocket.call : la valeur rendue par la route, et l’identifiant du profil serveur de cette frame (dev — null en production, où le serveur n’émet aucune méta).

IBridgeReadOptions#

interface IBridgeReadOptions<Q = unknown, PR = unknown>

Options d’une lecture par le pont (get).

IBridgeWriteOptions#

interface IBridgeWriteOptions<Q = unknown, PR = unknown> extends IBridgeReadOptions<Q, PR>

Options d’une écriture par le pont (post, put, patch, delete).

IWireStats#

interface IWireStats

Compteurs du fil d’une socket : trames et tailles dans chaque sens, temps passé à décoder. Cumulés depuis le premier appel de NodefonySocket.wireStats — un débit ou une moyenne se calcule par différence entre deux lectures.

KernelPingResult#

interface KernelPingResult

Réponse de la méthode RPC standard nodefony:kernel:ping — CONVENTION Nodefony : tout endpoint realtime (Studio aujourd’hui, RealtimeService en P13.4) y répond. Sert de liveness + base de mesure du round-trip (cf NodefonySocket.ping).

NodefonyNotice#

interface NodefonyNotice

Notice normalisée prête à afficher (snackbar / centre de notifications).

NodefonySocketOptions#

interface NodefonySocketOptions

ObserveNoticeLogOptions#

interface ObserveNoticeLogOptions

Options de observeNoticeLog.

ObserveSyslogOptions#

interface ObserveSyslogOptions

Options de observeSyslog.

RateDecision#

interface RateDecision

Décision de la boucle AIMD : nouvelle cadence + pourquoi. null = ne rien changer.

RealtimeFrame#

interface RealtimeFrame

Une frame du protocole temps réel (JSON-RPC 2.0) — pour le log/inspecteur.

RealtimeReconnectInfo#

interface RealtimeReconnectInfo

Tentative de reconnexion programmée par le back-off — charge utile de NodefonySocket.onReconnect.

SharedConnection#

interface SharedConnection

Résultat de connectShared : la socket, à qui elle appartient, et comment la démarrer.

SocketDetailRow#

interface SocketDetailRow

Une ligne de la description d’une socket : ce qu’on lit, et pourquoi ça compte.

SocketSnapshot#

interface SocketSnapshot

Ce que le client sait de sa PROPRE socket, à un instant donné.

Types (12)#

AdaptiveObserveOptions#

type AdaptiveObserveOptions = Omit<BindAdaptiveOptions, "intervalMs">

Options de observeAdaptiveChannel — la cadence désirée est passée à part.

ChannelHandler#

type ChannelHandler = (payload: unknown) => void

Gestionnaire d’un message de canal, tel que le reçoit une liaison.

ChannelPayload#

type ChannelPayload<L extends EventsMap, K extends string> = K extends keyof L ? L[K] : unknown

Charge reçue sur le canal K d’une socket qui écoute L — telle que la socket la livre à on(K, …) (lue par Jsonify sous un contrat). Un nom absent de la carte, possible seulement sur une socket non paramétrée, reste unknown.

ChannelSocket#

type ChannelSocket<L extends EventsMap> = NodefonySocket<EventsMap, L, ActionsMap>

Socket qui ÉCOUTE la carte L — n’importe quel paramétrage de NodefonySocket, dont celui que rend NodefonySocket.fromContract<C>().

Dispose#

type Dispose = () => void

Libération d’une souscription. Idempotente chez tous les observateurs de ce module.

Emit#

type Emit<T> = (value: T) => void

Rappel d’une liaison de vue : reçoit la valeur courante.

LocalEvent#

type LocalEvent = (typeof LOCAL_EVENTS)[keyof typeof LOCAL_EVENTS]

Un des noms d’événement local de la table LOCAL_EVENTS.

MessageStats#

type MessageStats = IChannelStats

Stats d’un canal — alias historique de IChannelStats (le contrat isomorphe IRealtimeSocket). Conservé pour les consommateurs qui importent MessageStats.

NoticeLevel#

type NoticeLevel = "success" | "info" | "warning" | "error"

Sévérité d’affichage — alignée sur les niveaux snackbar usuels.

ObservableClient#

type ObservableClient = NodefonySocket

Socket sur laquelle un observateur travaille. Volontairement le client NON paramétré : une liaison de vue ne connaît pas les cartes d’événements typées de l’application.

RateChangeReason#

type RateChangeReason = "init" | "decrease" | "increase"

Raison d’un changement de cadence (pour un badge UI).

RealtimeState#

type RealtimeState = "disconnected" | "connecting" | "connected" | "reconnecting" | "error"

← Toutes les références d’API