urbit / urbit-webrtc

WebRTC integration for Urbit: https://grants.urbit.org/proposals/21131866-webrtc-gall-agent-and-external-app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Use scry/watch and ack to build a message queue robust to watch disconnects

eamsden opened this issue · comments

Switchboard relies on watches as the communication channel for the %switchboard-to-client mark and the %incoming-call mark. If a subscription fails then there is no way to recover dropped messages. In particular, this means that an SDP negotiation could be lost, hanging the call, and a client subscribing during an incoming call has no way to discover the already-ringing call.

There should be a scry namespace for un-acked incoming calls and un-acked incoming messages. This, combined with an acknowledgement mechanism and facts for updates, will allow robust message delivery to the client.