first commit
This commit is contained in:
91
docs/networking/network/network-transport-webrtc/README.md
Normal file
91
docs/networking/network/network-transport-webrtc/README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# @suaveplan/network-transport-webrtc - WebRTC transport plugin for mesh networking: RTCPeerConnection data-channel transport with injectable constructors
|
||||
|
||||
## Summary
|
||||
|
||||
WebRTC transport plugin for mesh networking.
|
||||
|
||||
<!-- begin:auto-docs -->
|
||||
## Documentation tree
|
||||
|
||||
- [data-channel](./src/data-channel/data-channel-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [data-channel-manager](./src/data-channel/data-channel-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [ice](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [ice-manager](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [webrtc-mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [ping](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [ping-manager](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [signaling-client](./src/signaling/signaling-client.md) — Defines the structural contract for any signaling channel used by the WebRTC plugin to exchange offers, answers, and IC…
|
||||
- [websocket-signaling-client](./src/signaling/websocket-signaling-client.md) — Concrete `SignalingClient` implementation backed by a WebSocket. Handles the boring-but-load-bearing pieces of any sign…
|
||||
- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-transport-webrtc` package. All runtime failures with…
|
||||
<!-- end:auto-docs --> - [data-channel-manager](./src/data-channel/data-channel-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ice](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ice-manager](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_- [webrtc-mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_- [ping](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ping-manager](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [signaling-client](./src/signaling/signaling-client.md) — Defines the structural contract for any signaling channel used by the WebRTC plugin to exchange offers, answers, and IC…
|
||||
- [websocket-signaling-client](./src/signaling/websocket-signaling-client.md) — Concrete `SignalingClient` implementation backed by a WebSocket. Handles the boring-but-load-bearing pieces of any sign…
|
||||
- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-transport-webrtc` package. All runtime failures with…
|
||||
- [data-channel-manager](./src/data-channel/data-channel-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ice](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ice-manager](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_- [webrtc-mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_- [ping](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ping-manager](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [signaling-client](./src/signaling/signaling-client.md) — Defines the structural contract for any signaling channel used by the WebRTC plugin to exchange offers, answers, and IC…
|
||||
- [websocket-signaling-client](./src/signaling/websocket-signaling-client.md) — Concrete `SignalingClient` implementation backed by a WebSocket. Handles the boring-but-load-bearing pieces of any sign…
|
||||
- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-transport-webrtc` package. All runtime failures with…
|
||||
- [data-channel-manager](./src/data-channel/data-channel-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ice](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ice-manager](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_- [webrtc-mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_- [ping](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ping-manager](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [signaling-client](./src/signaling/signaling-client.md) — Defines the structural contract for any signaling channel used by the WebRTC plugin to exchange offers, answers, and IC…
|
||||
- [websocket-signaling-client](./src/signaling/websocket-signaling-client.md) — Concrete `SignalingClient` implementation backed by a WebSocket. Handles the boring-but-load-bearing pieces of any sign…
|
||||
- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-transport-webrtc` package. All runtime failures with…
|
||||
- [data-channel-manager](./src/data-channel/data-channel-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [ice](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ - [ice-manager](./src/ice/ice-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_ - [webrtc-mesh](./src/mesh/webrtc-mesh.md) — <!-- begin:auto-docs --> _(no submodules)_- [ping](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_ - [ping-manager](./src/ping/ping-manager.md) — <!-- begin:auto-docs --> _(no submodules)_- [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_ - [plugin](./src/plugin/plugin.md) — <!-- begin:auto-docs --> _(no submodules)_- [signaling-client](./src/signaling/signaling-client.md) — Defines the structural contract for any signaling channel used by the WebRTC plugin to exchange offers, answers, and IC…
|
||||
- [websocket-signaling-client](./src/signaling/websocket-signaling-client.md) — Concrete `SignalingClient` implementation backed by a WebSocket. Handles the boring-but-load-bearing pieces of any sign…
|
||||
- [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_ - [transport](./src/transport/transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_ - [types](./src/types/types.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-transport-webrtc` package. All runtime failures with…
|
||||
|
||||
## Purpose
|
||||
|
||||
Provides a WebRTC data-channel transport implementation for the `@suaveplan/network` mesh system. This plugin enables peer-to-peer messaging without requiring a central relay server for data. The transport implements the universal `Transport` interface and is fully mockable for Node.js testing.
|
||||
|
||||
## Features
|
||||
|
||||
- **WebRTCTransport** — full `Transport` interface via `RTCPeerConnection` + `RTCDataChannel`
|
||||
- **Injectable factories** — mockable `PeerConnectionLike` for unit testing
|
||||
- **WebRTCPlugin** — `NetworkPlugin` integration with lifecycle management
|
||||
- **JSON serialization** — uses `@suaveplan/serialize` for envelope encoding
|
||||
- **Peer events** — automatic connected/disconnected notifications
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Example
|
||||
|
||||
```ts
|
||||
import { WebRTCPlugin } from "@suaveplan/network-transport-webrtc";
|
||||
|
||||
const plugin = new WebRTCPlugin();
|
||||
node.use(plugin);
|
||||
await node.start();
|
||||
await plugin.transport.connect("peer-1", "signal-address");
|
||||
```
|
||||
|
||||
### Advanced Example
|
||||
|
||||
```ts
|
||||
import { WebRTCPlugin } from "@suaveplan/network-transport-webrtc";
|
||||
|
||||
const plugin = new WebRTCPlugin({
|
||||
dataChannelLabel: "mesh",
|
||||
});
|
||||
node.use(plugin);
|
||||
|
||||
plugin.transport.onMessage((peerId, envelope) => {
|
||||
console.log("From", peerId, envelope);
|
||||
});
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
See per-module documentation in `src/`:
|
||||
|
||||
- `src/transport/` — `WebRTCTransport`
|
||||
- `src/plugin/` — `WebRTCPlugin`
|
||||
- `src/types/` — mockable interfaces and configuration types
|
||||
- `src/error-codes.ts` — `NetworkWebRTCError`, `NETWORK_WEBRTC_CODES`
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
The transport is designed for testability. In a browser environment, you provide a factory that creates real `RTCPeerConnection` instances. In Node.js tests, you provide mock implementations of `PeerConnectionLike` and `DataChannelLike`. This decouples the transport logic from the browser WebRTC stack, making the package suitable for universal use despite WebRTC being a browser API.
|
||||
Reference in New Issue
Block a user