Ich bin neu bei socket.io und Node JS und ich versuche, eine skalierbare Anwendung mit einer hohen Anzahl von gleichzeitigen Socket-Verbindungen (10.000+) zu erstellen.Skalierbare Architektur für socket.io
Derzeit habe ich mit einem Modell begonnen, bei dem mein Server einen untergeordneten Prozess erstellt und jeder untergeordnete Prozess einen bestimmten Port mit einer angehängten sicket.io-Instanz überwacht. Sobald ein Client eine Verbindung herstellt, wird er auf einen bestimmten Port umgeleitet.
Die große Frage ist: Haben mehrere socket.io Instanzen auf mehreren Ports erhöht die Anzahl der möglichen Verbindungen?
Hier ist mein Code, nur für den Fall:
Server
var server = http.createServer(app);
server.childList = [];
for (var i = 0; i < app.portList.length; i++) {
server.childList[i] = require('child_process').fork('child.js');
}
server.listen(3443,() => {
for (var i = 0; i < app.portList.length; i++) {
server.childList[i].send({ message: 'createServer', port: app.portList[i] });;
}
});
child.js:
var app = require('./app');
var http = require('http');
var socket_io = require("socket.io");
process.on('message', (m) => {
if (m.message === 'createServer') {
var childServ = http.createServer(app);
childServ.listen(m.port,() => {
console.log("childServ listening on port "+m.port);
});
var io = socket_io();
io.attach(childServ);
io.sockets.on('connection', function (socket) {
console.log("A client just connected to my socket_io server on port "+m.port);
});
}
});
Fühlen Sie sich frei, die kraken freizugeben, wenn ich dort etwas Schreckliches getan