Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Graceful Disconnection Handling in Realtime Collaboration #364

Open
loreanvictor opened this issue Jun 24, 2024 · 0 comments
Open

Graceful Disconnection Handling in Realtime Collaboration #364

loreanvictor opened this issue Jun 24, 2024 · 0 comments

Comments

@loreanvictor
Copy link
Contributor

Is your feature request related to a problem?

In realtime collaboration, peers might be momentarily disconnected. With current realtime collaboration APIs of Apollon, when they reconnect, they will start receiving the remainder of the updates, not noticing the disconnection at all, but also not receiving changes they have missed.

Implementors of realtime collaboration can of course implement mechanisms to ensure each client WILL receive all updates with some temporal ordering so that they also converge, but this can be particularly difficult for them, going against the ideal of having an extremely easy-to-implement realtime collaboration system with Apollon.

Describe the solution you'd like

Ideally, Apollon could provide APIs for also syncing the diagram wholesale without affecting client-side changes that are not synced yet, and hopefully in a way that doesn't result in stuttering with mis-ordering of Apollon patch messages. Realtime collaboration already assumes some global ordering of patches, so such "sync" messages can also be timed properly with those messages via implementors (for example, on the server side). Alternatively, timestamps can be put on sync messages and patches, so that out-of-sync patches or sync messages do not get applied locally.

Describe alternatives you've considered

An alternative is to have implementations of realtime collaboration to repeat messages until they get some sort of acknowledgement. They could also limit this to discrete changes for efficiency, but would also need to implement some form of out-of-order message handling then, which further complicates implementation of realtime collaboration with Apollon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant