This is a little dirty demo of the initial stage of Realtime Collaboration project which I'm hoping to work on this summer as my GSoC project.
About the Demo
The demo is a raw implementation of the collaboration server based on Node.js and a client adapter both coupled with an older revision of VisualEditor(ES days) featuring single editing capability and others can view changes in realtime.
Data model synthesis
- The collaboration server uses the VE modules, and mimics the client editor while storing the data model and applying new transactions to it. The data model is an empty document on server initialization and the revised data model persists until the server is taken down.
- The server/client interactions are bound by Socket.IO API. With the lack of wide browser support for Websockets, Socket.IO with its fallback strategy works well.
- For the demo, the client in control of editing is the one who initiates an editing session first when no other client is connected. Passing of the editing control is not supported in the demo yet.
- Limited and not tested. Its all based on the experiments that I've been doing for the project and evolved through the process of me trying to work out some fundamental parts of the project.
- Inconsistent on Firefox. Tested well on Google Chrome 16.0.912.77.
- Not the best looking.
Link and code