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


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

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

`import { … } from "nodefony"` — 4 symboles.

### Interfaces (3)

#### `IChannelStats`

```ts
interface IChannelStats
```

Compteurs d'un canal — **génériques**, calculés au point d'arrivée des frames donc fiables et réutilisables par toute app. (`NodefonySocket.MessageStats` en est l'alias.)

- `method: string` — Méthode JSON-RPC == nom du canal pub/sub.
- `msgCount: number` — Total de notifications reçues sur ce canal.
- `lastMessage: number | null` — Timestamp (ms) de la dernière notification, `null` si aucune.
- `rate: number` — Débit instantané (msg/s), échantillonné 1×/s.
- `series: number[]` — Historique du débit (VU-mètre) — fenêtre glissante.

#### `IRealtimeChannel`

```ts
interface IRealtimeChannel
```

Handle d'UN canal — vue par-canal d'un sous-flux duplex multiplexé sur la `IRealtimeSocket`. Forme naturelle des canaux à état (un appel SIP, une connexion bridgée) : il porte son nom, sa nature et son cycle de vie. C'est le **point d'accroche** des couches à venir (codec de protocole, cadence AIMD, politique `drop|coalesce|batch`) — elles enrichiront ce handle SANS retoucher la socket.

- `readonly name: string` — Nom du canal (clé de multiplexage == method JSON-RPC des notifications).
- `readonly kind?: string` — Nature du backing serveur (`pubsub` | `protocol` | `bridge` | `proxy` | …), annoncée par le serveur.
- `on(handler: RealtimeHandler): () => void` — Branche un handler de réception sur ce canal.
- `send(payload?: object): void` — Émet sur ce canal (duplex, one-way) — même charge admise que `IRealtimeSocket.publish`.
- `open(): void` — Ouvre le flux : `subscribe` ref-compté (demande au pair de pousser).
- `close(): void` — Ferme : `unsubscribe` ref-compté + retire les handlers branchés via ce handle.

#### `IRealtimeSocket`

```ts
interface IRealtimeSocket<Emit extends EventsMap = DefaultEventsMap, Listen extends EventsMap = DefaultEventsMap>
```

Contrat de « la socket Nodefony » — voir le bloc de tête du fichier. Implémenté par `NodefonySocket` (front) et, à terme, par une façade serveur au-dessus du hub.

- `subscribe(channel: EventNames<Listen> | (string & {})): void` — S'abonne à un canal (ref-compté) : émet la demande au pair UNIQUEMENT au 1ᵉʳ consommateur ; ré-émise automatiquement à chaque (re)connexion.
- `unsubscribe(channel: EventNames<Listen> | (string & {})): void` — Désabonne un consommateur (ref-compté) : coupe le flux réseau au DERNIER.
- `on<K extends string>(channel: K, handler: K extends EventNames<Listen> ? (payload: EventPayload<Listen, K>) => void : RealtimeHandler): () => void` — Branche un handler sur un canal (réception).
- `off<K extends string>(channel: K, handler: K extends EventNames<Listen> ? (payload: EventPayload<Listen, K>) => void : RealtimeHandler): void` — Retire un handler d'un canal.
- `publish<K extends string>(channel: K, payload?: K extends EventNames<Emit> ? EventPayload<Emit, K> : object): void` — Émet sur un canal (one-way, pas de réponse).
- `channel(name: string): IRealtimeChannel` — Vue par-canal — voir `IRealtimeChannel`.
- `getStats(): IChannelStats[]` — Snapshot des compteurs par canal (refs internes — à LIRE, pas à muter).
- `getChannelStats(channel: string): IChannelStats` — Compteurs d'un canal précis (== method JSON-RPC) ou `undefined`.
- `readonly subscribedChannels: string[]` — Canaux actuellement abonnés (≥ 1 consommateur).

### Types (1)

#### `RealtimeHandler`

```ts
type RealtimeHandler = { handle(...args: unknown[]): void; }["handle"]
```

Handler d'un canal pub/sub — reçoit le `params` de la notification (ou `(method, params)` sur `"*"`).

---

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