Fast Ferry — WebSocket Streaming Relay¶
A persistent, low-latency TCP tunnel for real-time telemetry or chat. Secures bi-directional streaming data at Layer 4 without sacrificing throughput.
Tags: Armored Tunnel | Single Cluster | WebSocket | 2 Pods
Overview¶
The Fast Ferry connects a WebSocket Initiator (ws-initiator) to a WebSocket Terminator (ws-terminator) over a persistent WoSP-secured TCP session. Armored Tunnel mode (xtra4) provides per-session key rotation — the WoSP identity is issued when the connection is established and held for the duration of the session.
Unlike Armored Car blueprints, the Fast Ferry is optimized for persistent connections where per-request teardown is not possible.
flowchart TD
A["Gateway / Initiator\n(ws-initiator)"]
B["Sink / Terminator\n(ws-terminator)"]
A -->|"WoSP xtra4\npersistent session"| B Use Cases¶
- Real-time telemetry streams (IoT sensors, monitoring data)
- Persistent chat or messaging channels
- Live event feeds requiring low-latency delivery
- Any workload where the overhead of per-request connection setup is unacceptable
Bundle Contents¶
fast-ferry/
├── initiator/ ← ws-initiator
├── terminator/ ← ws-terminator
├── deploy.sh
├── teardown.sh
├── blueprint.yaml
├── README.md
└── EULA.md
Note
The Fast Ferry does not include pinhole-setup.sh — it uses internal WoSP session tunneling rather than Pinhole TLS endpoints.
Deploy¶
Prerequisites: Docker Desktop, k3d >= 5.0, kubectl, valid Hopr license
Verify¶
Expected output:
Customize¶
Hook functions for this blueprint:
on_trigger(payload, headers)— ininitiator/app/app.py: initiate the streaming sessionon_receive_terminator(payload)— interminator/app/app.py: handle streamed messages at the receiving end
Pricing¶
2 WoSP units (1 per pod). See Commercial Licensing.