How does real-time collaboration with multiple clients work in a system using operation transformati

Posted by Saikat Chakrabarti on Stack Overflow See other posts from Stack Overflow or by Saikat Chakrabarti
Published on 2010-04-28T22:32:11Z Indexed on 2010/04/28 22:37 UTC
Read the original article Hit count: 395

I just finished reading High-Latency, Low-Bandwidth Windowing in the Jupiter Collaboration System and I mostly followed everything until part 6: global consistency. This part describes how the system described in the paper can be extended to accomodate for multiple clients connected to the server. However, the explanation is very short and essentially says the system will work if the central server merely forwards client messages to all the other clients. I don't really understand how this works though. What state vector would be sent in the message that is sent to all the other clients? Does the server maintain separate state vectors for each client? Does it maintain a separate copy of the widgets locally for each client?

The simple example I can think of is this setup: imagine client A, server, and client B with client A and client B both connected to the server. To start, all three have the state object "ABCD". Then, client A sends the message "insert character F at position 0" at the same time client B sends the message "insert character G at position 0" to the server. It seems like simply relaying client A's message to client B and vice versa doesn't actually handle this case. So what exactly does the server do?

© Stack Overflow or respective owner

Related posts about real-time

Related posts about client-server