Skip to content

Real-Time Collaborative Canvas with Socket.IO and Cloud Deployment #4

@ekas-7

Description

@ekas-7

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)

  1. Open the current canvas from two different clients.
  2. Draw/update on one client.
  3. 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

  • I am willing to work on this issue
  • Help wanted

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions