---
title: "Référence d'API — @nodefony/realtime/testing"
source: docs/api/realtime/testing.md
url: https://nodefony.github.io/nodefony-core/docs/api/realtime/testing/
---


[Documentation](../../../) › [Référence d'API](../../) › [`@nodefony/realtime`](../) › testing

> 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/testing`

`import { … } from "@nodefony/realtime/testing"` — 6 symboles.

### Fonctions (1)

#### `createRealtimeHarness`

```ts
function createRealtimeHarness<C extends RealtimeController>(create: (context: ContextType) => C, options?: IRealtimeHarnessOptions): IRealtimeHarness<C>
```

Monte un controller temps réel sur une fausse connexion et rend de quoi le piloter.

### Interfaces (4)

#### `IHarnessClose`

```ts
interface IHarnessClose
```

Fermeture demandée par le serveur (code RFC 6455 + raison).

- `readonly code?: number`
- `readonly reason?: string`

#### `IRealtimeFrame`

```ts
interface IRealtimeFrame
```

Frame JSON-RPC 2.0 telle qu'elle circule sur la socket, dans les deux sens.

- `readonly jsonrpc?: string`
- `readonly id?: number | string`
- `readonly method?: string`
- `readonly params?: unknown`
- `readonly result?: unknown`
- `readonly error?: { code: number; message: string; data?: unknown; }`

#### `IRealtimeHarness`

```ts
interface IRealtimeHarness<C extends RealtimeController>
```

Vue de test d'un controller temps réel connecté : ce qu'il a reçu, ce qu'il a émis, et de quoi le piloter frame par frame.

- `readonly controller: C` — L'instance éprouvée, du type rendu par la fabrique.
- `readonly hub: RealtimeHub` — Le hub du process — pour poser une politique de canal ou lire une sonde.
- `readonly received: readonly IRealtimeFrame[]` — Toutes les frames sorties, dans l'ordre d'émission.
- `readonly closes: readonly IHarnessClose[]` — Les fermetures demandées par le serveur (un refus d'Origin y laisse 4003).
- `readonly notices: readonly string[]` — Les avertissements de plateforme émis DEPUIS le handshake — dont celui qui dit qu'un canal servi dynamiquement ne porte aucune politique.
- `connect(): Promise<IRealtimeFrame>` — Ouvre la socket (message `null` → `realtime:welcome`).
- `subscribe(channel: string): Promise<void>` — Demande un canal, comme le ferait un client, et attend la réponse du serveur (acquittement `realtime:subscribed` ou refus `realtime:denied`).
- `unsubscribe(channel: string): Promise<void>` — Rend un canal — le provider est disposé au dernier abonné.
- `call<T = unknown>(method: string, params?: unknown): Promise<T>` — Appelle une action (requête → réponse), appariée par identifiant.
- `notify(method: string, params?: unknown): Promise<void>` — Envoie une notification cliente (plein-duplex entrant).
- `send(frame: Record<string, unknown>): Promise<void>` — Injecte une frame brute — pour éprouver un protocole malformé.
- `messages(channel: string): readonly unknown[]` — Les charges utiles reçues sur un canal, dans l'ordre.
- `denials(): readonly IHarnessDenied[]` — Les refus d'abonnement notifiés (`realtime:denied`).
- `subscriptions(): readonly string[]` — Les canaux dont l'abonnement a été acquitté (`realtime:subscribed`), dans l'ordre.
- `close(): void` — Ferme la socket côté client : la base dispose alors tous ses providers.
- `dispose(): void` — `close()` puis remise à zéro du hub.

#### `IRealtimeHarnessOptions`

```ts
interface IRealtimeHarnessOptions
```

Écart au décor par défaut du harnais.

- `readonly url?: string` — URL de la connexion, telle que la verraient les matchers d'authenticator (seam #3).
- `readonly origin?: string` — `Origin` du handshake — ce que juge la politique CSRF (seam #4).
- `readonly headers?: Record<string, string>` — En-têtes de la requête d'upgrade.
- `readonly cookies?: Record<string, { value: string; }>` — Cookies de la requête d'upgrade, à la forme du contexte HTTP.
- `readonly identity?: IRealtimeToken` — Identité posée au handshake (seam #2).
- `readonly frameAuthorizer?: FrameAuthorizer` — Verrou de frame (seam #1).
- `readonly resetHub?: boolean` — Remet le hub à zéro à la création (défaut `true`).

### Types (1)

#### `IHarnessDenied`

```ts
type IHarnessDenied = Readonly<IRealtimeDenied>
```

Refus d'abonnement notifié au client (`realtime:denied`) — le contrat de protocole lui-même, en lecture seule. Le recopier ici le ferait diverger : un motif ajouté au protocole doit apparaître dans le banc sans qu'on y pense.

---

[← Toutes les références d'API](../../)
