Overview
A production-grade real-time chat application supporting private messaging, group chats, and presence detection. Built to scale horizontally using Redis pub/sub for message distribution across multiple server instances.
Technical Architecture
WebSocket Server
- Socket.io for WebSocket management with fallback to long-polling
- Connection pooling and heartbeat mechanism for connection health
- JWT-based authentication for secure WebSocket connections
Scaling Strategy
- Redis pub/sub for broadcasting messages across server instances
- Sticky sessions using Nginx for load balancing
- Horizontal pod autoscaling in Kubernetes based on active connections
// Redis pub/sub for cross-server messaging
const redis = require('redis');
const subscriber = redis.createClient();
const publisher = redis.createClient();
subscriber.subscribe('chat-messages');
subscriber.on('message', (channel, message) => {
const msg = JSON.parse(message);
io.to(msg.roomId).emit('message', msg);
});
Features
- Real-time Messaging: Sub-100ms message delivery
- Typing Indicators: Live feedback when users are composing messages
- Read Receipts: Track message delivery and read status
- File Sharing: Image and document upload with preview
- Emoji Reactions: Quick reactions to messages
- Search: Full-text search across conversation history
Performance Metrics
- Handles 10,000+ concurrent connections per server instance
- Average message latency: 75ms
- 99th percentile latency: 200ms