Codacoda
Back to Academy

system design

Chat System

Design a real-time messaging system that supports one-on-one and group conversations. The core components include a message router that delivers messages to connected users, session management for tracking online status, chat rooms for group conversations, and message ordering using timestamps or sequence numbers. Key trade-offs include push versus pull delivery models, eventual versus strong consistency for message ordering, and storing messages per-user versus per-conversation. The system must handle users going offline and receiving missed messages upon reconnection.

Use Cases

  • Team collaboration tools like Slack or Microsoft Teams
  • Customer support live chat widgets
  • In-game real-time communication between players
  • Social media direct messaging features

Visualization

OVERVIEWClient ASenderClient BReceiverWebSocket ServerConnection MgrSession MapRoute MessagesMessage QueueKafka / RabbitMQChat DBCassandraMessagesRead Receipts
Speed:1x
Chat System: real-time messaging using WebSockets. Key components: WebSocket Server for connections, Message Queue for async delivery, and Chat DB for persistence.Step 1 / 7

Implementation

Output

Click "Run Code" to see output...