stream-messages
Installation
SKILL.md
Stream Control Messages
Overview
On WebRTC/native, clients exchange JSON message envelopes with the server over the custom-message data channel:
{"messageType": "json", "messageRecipient": "<recipient>", "data": "<inner JSON as a string>"}
The wire format matches the kit-livestream extensions and the @nvidia/ov-web-rtc browser client, so a stock browser client works unmodified. Inbound routing:
| Envelope | Handled by | Delivered as |
|---|---|---|
messageRecipient: "stream" |
The SDK (always consumed) | Typed callbacks (on_resize_request, on_clipboard) + automatic handshake/cursor handling |
messageRecipient: "app" (or its pre-handshake alias "kit") |
The SDK (unwrapped) | on_app_message with the inner data payload; falls back to on_message (full envelope) when on_app_message is not set |
| Everything else (non-JSON, non-envelope JSON, other recipients) | Your application | on_message, byte-identical — the intended channel for native/bespoke clients |
Stream control messages are WebRTC/native only: set_cursor / send_clipboard return NOT_SUPPORTED on RTSP / SHM / CUDASHM, and the callbacks register everywhere but only fire on WebRTC/native. Register all callbacks before start().