Proposal: PubSub Architecture for relay #96
Closed
yuki-uchida
announced in
Announcements
Replies: 1 comment
-
|
Committed. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Discussion
current sequence is here.
But, now we can't cascade moq-wasm server, So we need to re-architecture for cascading.
I propose new architecture for cascading relay.
sequenceDiagram participant Producer(Client) participant Consumer(Server) participant Producer(Server) participant Consumer(Client) Producer(Client) ->> Consumer(Server): CLIENT_SETUP activate Consumer(Server) Consumer(Server) ->> Producer(Client): SERVER_SETUP Consumer(Client) ->> Producer(Server): CLIENT_SETUP activate Producer(Server) Producer(Server) ->> Consumer(Client): SERVER_SETUP Note over Producer(Client), Consumer(Client) : ANNOUNCE Phase alt Consumer(Server) needs ANNOUNCE of a specific TrackNamespace Consumer(Server) ->> Producer(Client): SUBSCRIBE_NAMESPACE Producer(Client) ->> Consumer(Server): SUBSCRIBE_NAMESPACE_OK end Producer(Client) ->> Consumer(Server): ANNOUNCE Consumer(Server) ->> Producer(Client): ANNOUNCE_OK Consumer(Server) -->> Producer(Server): Forward TrackNamespace alt Consumer(Client) needs ANNOUNCE of a specific TrackNamespace Consumer(Client) ->> Producer(Server): SUBSCRIBE_NAMESPACE Producer(Server) ->> Consumer(Client): SUBSCRIBE_NAMESPACE_OK end Producer(Server) ->> Consumer(Client): ANNOUNCE Consumer(Client) ->> Producer(Server): ANNOUNCE_OK alt updates the TrackNamespace matches to the Prefix Producer(Client) ->> Consumer(Server): ANNOUNCE Consumer(Server) ->> Producer(Client): ANNOUNCE_OK Consumer(Server) -->> Producer(Server): Forward TrackNamespace Producer(Server) ->> Consumer(Client): ANNOUNCE Consumer(Client) ->> Producer(Server): ANNOUNCE_OK end Note over Producer(Client), Consumer(Client) : SUBSCRIBE Phase alt not already server subscribed Consumer(Client) ->> Producer(Server): SUBSCRIBE Producer(Server) -->> Consumer(Server): Request Subscribe Consumer(Server) ->> Producer(Client): SUBSCRIBE Producer(Client) ->> Consumer(Server): SUBSCRIBE_OK Consumer(Server) -->> Producer(Server): Response Subscribe completed Producer(Server) ->> Consumer(Client): SUBSCRIBE_OK else already server subscribed <br> = another downstream subscription exists Consumer(Server) ->> Producer(Client): SUBSCRIBE Producer(Client) ->> Consumer(Server): SUBSCRIBE_OK Consumer(Server) -->> Producer(Server): Forward TrackName Consumer(Client) ->> Producer(Server): SUBSCRIBE Producer(Server) ->> Consumer(Client): SUBSCRIBE_OK end Note over Producer(Client), Consumer(Client) : Data Stream Phase loop Producer(Client) ->> Consumer(Server): OBJECT Consumer(Server) -->> Producer(Server): Cache and Forward Producer(Server) ->> Consumer(Client): OBJECT end Note over Producer(Client), Consumer(Client) : End Phase alt by End Subscriber Consumer(Client) ->> Producer(Server): UNSUBSCRIBE Producer(Server) ->> Consumer(Client): SUBSCRIBE_DONE Producer(Server) -->> Consumer(Server): Notify Note over Consumer(Server), Producer(Client): if needed Consumer(Server) ->> Producer(Client): UNSUBSCRIBE Producer(Client) ->> Consumer(Server): SUBSCRIBE_DONE end alt by Original Publisher Producer(Client) ->> Consumer(Server): SUBSCRIBE_DONE Consumer(Server) -->> Producer(Server): Request Stop Specific Subscription Producer(Server) ->> Consumer(Client): SUBSCRIBE_DONE end alt if Scheduled to end Producer(Client) ->> Consumer(Server): UNANNOUNCE Consumer(Server) -->> Producer(Server): Request Stop New Subscription Consumer(Server) ->> Producer(Client): ANNOUNCE_CANCEL Producer(Client) ->> Consumer(Server): SUBSCRIBE_DONE Consumer(Server) -->> Producer(Server): Request Stop Subscription Producer(Server) ->> Consumer(Client): SUBSCRIBE_DONE end deactivate Consumer(Server) deactivate Producer(Server)Beta Was this translation helpful? Give feedback.
All reactions