@suaveplan/network-transport-standby - Pre-emptive WebRTC standby transport: warm-slot connection pool with health scoring and auto-reconnect for sub-100ms peer attach
Summary
Pre-emptive WebRTC standby transport for @suaveplan/network. Maintains
a pool of warm RTCPeerConnection-like slots so peer attach completes
in ~10 ms instead of the typical 1-3 s ICE/DTLS handshake.
Documentation tree
- errors — (no submodules)
- errors — (no submodules)
- health — (no submodules)
- monitor — (no submodules)
- otel — (no submodules)
- otel — (no submodules)
- plugin — (no submodules)
- plugin — (no submodules)
- pool — (no submodules)
- pool — (no submodules)
- reconnect — (no submodules)
- reconnect — (no submodules)
- transport — (no submodules)
- transport — (no submodules)
- types — (no submodules)
- types — (no submodules)
Module map
src/types/types.md— shared types.src/errors/errors.md— 6-code error registry +NetStandbyError.src/health/monitor.md— EMA-smoothed composite health scorer.src/otel/otel.md— gauge, counters, histogram + span helper.src/reconnect/reconnect.md— exponential-backoff retry loop over@suaveplan/retry.src/pool/pool.md— connection-pool engine.src/transport/transport.md—Transportadapter implementing@suaveplan/network's contract.src/plugin/plugin.md—NetworkPluginwrapper.
At a glance
import { NetworkNode } from "@suaveplan/network";
import { StandbyPlugin } from "@suaveplan/network-transport-standby";
const node = new NetworkNode();
node.use(
new StandbyPlugin({
pool: {
config: {
minSlots: 4,
maxSlots: 8,
warmupTimeoutMs: 5_000,
healthCheckIntervalMs: 30_000,
qualityThreshold: 50,
maxReconnectAttempts: 3,
reconnectBaseDelayMs: 1_000,
reconnectMaxDelayMs: 30_000,
},
rtcFactory: async (slotId) => makeRtcConnection(slotId),
},
})
);
await node.start();