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

Référence d'API — @nodefony/http — context

stable

Documentation › Référence d’API › @nodefony/http › context

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

import { … } from "@nodefony/http" — 51 symboles.

Classes (11)#

Context#

class Context extends Service implements IContextInterface

Http2Request#

class Http2Request extends HttpRequest

Http2Response#

class Http2Response extends HttpResponse

HttpContext#

class HttpContext extends Context implements IHttpContextInterface

HttpRequest#

class HttpRequest

HttpResponse#

class HttpResponse

Response#

class HttpResponse

SseStream#

class SseStream<Events extends EventsMap = DefaultEventsMap>

Un flux text/event-stream ouvert sur une réponse.

WebsocketContext#

class WebsocketContext extends Context implements IWebsocketContextInterface

WebsocketResponse#

class WebsocketResponse

wsResponse#

class WebsocketResponse

Fonctions (10)#

acceptsEventStream#

function acceptsEventStream(accept: string | string[]): boolean

Le client accepte-t-il un flux d’événements ? Lit l’en-tête Accept.

compileDomainPattern#

function compileDomainPattern(pattern: DomainPattern): RegExp

Compile UN pattern de domaine en RegExp selon la politique sûre.

compileDomainPatterns#

function compileDomainPatterns(patterns: DomainPattern | DomainPattern[]): RegExp[]

Compile une liste de patterns. Les string vides sont ignorées (un ^$ ne sert à rien et masque une coquille de config).

compileTrustedHosts#

function compileTrustedHosts(domain: string, trusted: ITrustedHostsConfig, isDev: boolean): RegExp[]

Construit la liste RegExp de la barrière trustedHosts (kernel, avant routing).

isContentlessStatus#

function isContentlessStatus(status: number): boolean

Vrai pour un statut dont la réponse n’a, par définition, aucun contenu — 204, 205 et 304 (RFC 9110 §15.3.5, §15.3.6, §15.4.5).

isDomainAllowed#

function isDomainAllowed(regAlias: RegExp[], domain: string): boolean

Teste un Host entrant contre une liste de RegExp pré-compilée.

isWebsocketContext#

function isWebsocketContext(context: ContextType): context is WebsocketContext

Dit si un contexte sert une connexion WebSocket — la garde qui rétrécit ContextType à WebsocketContext sans conversion.

openByteStream#

function openByteStream(context: HttpContext, source: ByteStreamSource, options?: IByteStreamOptions): Promise<IByteStreamResult>

Répond par un flux d’octets sur la réponse d’un contexte HTTP.

openSseStream#

function openSseStream<Events extends EventsMap = DefaultEventsMap>(context: HttpContext, options?: ISseStreamOptions): SseStream<Events> | Promise<SseStream<Events>>

Ouvre un flux d’événements sur la réponse d’un contexte HTTP.

parseRequestTarget#

function parseRequestTarget(target: string): ISplitTarget | null

Analyse un request-target origin-form (/chemin[?query]) dans la forme NORMALISÉE que la porte HTTP donne au routeur (HttpRequest) : découpe exacte quand le parse WHATWG serait l’identité (splitTarget), vrai parse WHATWG sinon — dot-segments résolus, \ replié, percent-encoding posé.

Constantes (9)#

FRAME_RATE_WINDOW_MS#

const FRAME_RATE_WINDOW_MS = 1000

Durée d’une fenêtre de comptage (ms) : la borne s’exprime en trames PAR SECONDE.

REQUEST_TRACE_CHANNEL#

const REQUEST_TRACE_CHANNEL = "nodefony.http.request"

Nom du TracingChannel qui encadre chaque requête HTTP et chaque handshake WebSocket — forme module.fonction recommandée par la documentation de node:diagnostics_channel ; les sous-canaux sont tracing:nodefony.http.request:start, :end, :asyncStart, :asyncEnd, :error.

SSE_HEARTBEAT_MS#

const SSE_HEARTBEAT_MS = 15000

Battement de cœur par défaut, en ms (§9.2.7 : « every 15 seconds or so »).

admitFrame#

const admitFrame: (win: IFrameRateWindow, now: number, bound: number, closeAfter: number) => BackpressureVerdict

Décide du sort d’une trame reçue, AVANT tout décodage : l’admettre, l’écarter, ou fermer la connexion.

decideSend#

const decideSend: (ws: IBackpressureTarget, max: number, policy: WsBackpressurePolicy, closeAfterDrops?: number) => WsSendDecision

Décide si une frame doit partir vers ws selon la backpressure SORTANTE (serveur → client). Protège la RAM d’envoi du serveur quand le client est lent à RECEVOIR (ne lit pas assez vite → ws.bufferedAmount gonfle → OOM). broadcast() amplifie : un seul client lent peut, sans borne, faire tomber la diffusion entière.

frameRateRejectedTotal#

const frameRateRejectedTotal: () => number

Nombre cumulé de trames entrantes écartées par la borne de débit dans ce processus (unité : une trame reçue).

readBackpressureOptions#

const readBackpressureOptions: (wss: WebSocketServer | null) => { max: number; policy: WsBackpressurePolicy; closeAfterDrops: number; }

Relit le seuil + la politique depuis les options du WebSocketServer.

readFrameRateBound#

const readFrameRateBound: (server: unknown) => number

Borne de débit entrante du serveur WebSocket (maxFramesPerSecond) ; 0 = désactivée.

readFrameRateCloseAfter#

const readFrameRateCloseAfter: (server: unknown) => number

Solde de refus qui ferme la connexion (frameRateCloseAfterRejects) ; 0 = jamais.

Interfaces (10)#

IBackpressureSocket#

interface IBackpressureSocket extends Ws

Socket augmentée d’un compteur de drops (number lazy — lu par la sonde socket).

IBackpressureTarget#

interface IBackpressureTarget

Ce dont la règle a besoin, et rien de plus : la taille de la file d’envoi et de quoi fermer. Typé STRUCTURELLEMENT pour que @nodefony/realtime applique la même règle sans importer ws (son transport type déjà sa connexion ainsi).

IByteStreamOptions#

interface IByteStreamOptions

Options d’une réponse en flux d’octets.

IByteStreamResult#

interface IByteStreamResult

Ce que rend la fin d’un flux d’octets.

IFrameRateWindow#

interface IFrameRateWindow

Fenêtre de comptage d’une connexion, créée à la PREMIÈRE trame reçue borne activée.

ISplitTarget#

interface ISplitTarget

Résultat d’une découpe acceptée : les deux composants, dans la même forme que URL.pathname / URL.search (le ? inclus, "" si query absente ou vide — /x? donne search === "" comme WHATWG).

ISseSendOptions#

interface ISseSendOptions<K extends string = string>

Ce qu’un événement porte en plus de ses données.

ISseStreamOptions#

interface ISseStreamOptions

Options d’ouverture d’un flux.

IWsBackpressureOptions#

interface IWsBackpressureOptions

Options de backpressure SORTANTE (serveur → client).

IWsFrameRateOptions#

interface IWsFrameRateOptions

Options de la borne de débit ENTRANTE (client → serveur), lues dans wss.options.

Types (11)#

ByteStreamEndReason#

type ByteStreamEndReason = "end" | "client" | "error" | "timeout" | "stall"

Raison de la fin d’un flux d’octets.

ByteStreamSource#

type ByteStreamSource = Readable | ReadableStream<Uint8Array>

Une source d’octets : flux Node, ou flux web (fetch().body).

Cookies#

type Cookies = Record<string, Cookie>

DomainPattern#

type DomainPattern = string | RegExp

Un pattern de domaine : string (exact ou *-wildcard) ou RegExp (libre).

HTTPMethod#

type HTTPMethod = "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH" | "WEBSOCKET"

ITrustedHostsConfig#

type ITrustedHostsConfig = boolean | DomainPattern | DomainPattern[]

Valeur de configuration http.trustedHosts (barrière sécu avant routing) : - false / absent : défaut (domaine canonique + loopback en dev). - true : bypass total — tout Host passe (déploiement où un reverse-proxy filtre déjà le Host, cf doctrine cloud-native). - string / string[] : patterns additionnels (exact ou *-wildcard).

WebSocketState#

type WebSocketState = "handshake" | "connected" | "closed" | "error" | "message" | null

WsBackpressurePolicy#

type WsBackpressurePolicy = BackpressurePolicy

Politique appliquée quand le buffer d’envoi d’un client dépasse le seuil.

WsSendDecision#

type WsSendDecision = BackpressureVerdict

Décision pour une frame : l’émettre, la sauter, ou (socket fermée) ne rien faire.

contextRequest#

type contextRequest = HttpRequest | Http2Request | http.IncomingMessage | null

contextResponse#

type contextResponse = HttpResponse | Http2Response | WebsocketResponse | null

← Toutes les références d’API