app-messaging
Application Messaging
Overview
ovstream's core moves application payloads as opaque strings: Server.send_app_message(text) wraps text in the app envelope the browser client routes to its application handler, and Server.on_app_message delivers inbound app envelopes unwrapped (see the stream-messages skill). It says nothing about what is inside the string and does not split large payloads.
ovstream_utils.messaging is the optional layer above that. It implements the application message convention established between the @nvidia/ov-web-rtc client library and the omni.kit.livestream.messaging Kit extension — a convention ovstream follows for stock-browser-client interoperability, not one it defines or enforces:
{"event_type": "<name>", "id": "<uuid>", "payload": { ... }}
and, when a message does not fit one transport message, one part per message with a chunk of the JSON-serialised payload:
{"event_type": "<name>", "id": "<uuid>", "part": 1, "numParts": 3, "payload": "<chunk>"}
It is Python only, pure JSON, and lives in ovstream_utils rather than the core on purpose: the core stays envelope-agnostic so native and bespoke clients remain first-class, and a convention owned outside ovstream can evolve without touching the C ABI. The module is written against the client library bundled with examples/webrtc_client; if the convention changes there, this module changes with it.