Contributor
Prathamesh Desai

Optimizing Existing Real-Time Communication with Websockets


Mentors
Blaine
Organization
Learning Equality
Technologies
python, django, Django Channels
Topics
web, real-time
Kolibri Studio is a content curation tool for Kolibri. Its main purpose is to provide an easy and convenient way to organize learning resources and build channels for Kolibri. User Experience is a really important aspect of Kolibri Studio as it may involve multiple users working on the same content curation unit (channels). Delayed reflection of the modified state of a channel to a collaborative user may cause inconvenience and may even lead to repetitive change to the same entity. The current setup for Real-Time Communication in Studio involves maintaining a server-side log which is being simulated by calling the POST method of sync API. All collaborative users are hitting this POST method at regular intervals to post any changes made by them (if no changes are made then the empty changes array is posted) and receive any changes made by other users as a response of this method. The proposed WebSocket architecture will neutralize and reduce the load on the server which is currently being created due to continuous polling of the APIs. It will convert the complex underlying structure of Sync API into a simple real-time-friendly architecture in which a full-duplex communication between client and server takes place. It will also enormously enhance the user experience of the whole process of collaborative content curation.