Description
Enable real-time collaboration in the DevMux canvas so multiple users can draw, edit, and update simultaneously. This requires implementing a Socket.IO layer for bidirectional communication, ensuring low-latency updates across sessions. Additionally, deployment should support scalability on cloud providers such as AWS, GCP, or Azure.
Expected Behavior
- Multiple users can interact with the same canvas in real-time.
- All connected clients see updates instantly without refreshing.
- Socket.IO server handles synchronization of canvas states.
- Application can scale horizontally on AWS/GCP/Azure.
Current Behavior
- The canvas is static and does not support real-time collaboration.
- Updates are not synchronized across multiple users.
- No deployment setup for handling scalable real-time connections.
Steps to Reproduce (for bugs)
- Open the current canvas from two different clients.
- Draw/update on one client.
- Notice that the other client does not see the change.
Possible Solution
-
Integrate Socket.IO on the backend for WebSocket-based real-time communication.
-
Maintain canvas state on the server and broadcast updates to all connected clients.
-
Implement room or session handling to isolate different collaborative canvases.
-
Deploy backend with real-time support using:
- AWS ECS/EKS or Elastic Beanstalk with Load Balancer + Auto Scaling.
- GCP GKE or Cloud Run with WebSocket support.
- Azure AKS or App Service with scaling WebSockets enabled.
-
Use a managed database (e.g., Redis, DynamoDB, Firestore) for persisting shared canvas state if needed.
Additional Context
- Real-time collaboration is a key feature for an interactive code editor & canvas platform.
- Scaling WebSockets requires sticky sessions (or Socket.IO adapter like Redis).
- Cloud deployment should ensure reliability and auto-scaling.
Contribution