Why 400 Players Need a Special Architecture
The WebSocket Bottleneck Problem
// Cluster configuration
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
const redis = new Redis('redis-server');
redis.subscribe('quiz-messages');
} else {
const wss = new WebSocket.Server({ port: 8080 + process.pid });
wss.on('message', (msg) => {
redis.publish('quiz-messages', msg);
});
}
Connection Pooling and Heartbeat