2017-02-05 2 views
-1

Ich bin neu in Node.js und Socket.io, und für mein aktuelles Web-Entwicklungsprojekt habe ich einen Socket.io-Chatroom eingerichtet, und das muss ich tun in der Lage sein, viele (viele hundert) davon zu machen. Gibt es eine Möglichkeit, dies zu tun?Wie du Node.js/Socket.io Server duplizierst

+0

Besser sollten Sie erklären, was Ihr Anwendungsfall ist, damit wir Ihnen mehr beraten können. Im Wesentlichen sollten Sie eine Instanz pro Server haben. Wenn Sie also Hunderte von Instanzen erstellen möchten, erstellen Sie Hunderte von Servern. Aber es scheint nicht sehr natürlich zu sein, hundert von socket.io-Instanzen zu haben. – Hosar

+0

Warum verwenden Sie nicht nur einen Server und viele Clients verwenden ihn? Es sollte keine Probleme mit dem Chatroom-Server geben. Sie sollten Tausende von Benutzern mit einem Server hosten können. Das ist der normale Anwendungsfall für einen Server. – jfriend00

Antwort

0

Das Erstellen eines Child-Prozesses im Knoten ist ziemlich einfach, besonders wenn es sich um einen anderen Knoten handelt.

child_process.fork ist eine der verfügbaren Optionen

import cp = require('child_process'); 
 

 
var proc = cp.fork('path/to/module'); 
 
proc.on('error', function(err) { 
 
    console.error('The process failed to start'); 
 
    console.error(err); 
 
}); 
 

 
proc.on('exit', function(code, signal) { 
 
    console.log('The process was terminated by ' + signal + ' and exited with code ' + code); 
 
});

Sie auch bei cluster aussehen wollen kann, es child_process.fork verwendet die Kinder, um zu laichen, aber zusätzliche Funktionalität auf gebaut, um automatisch teilen Sie Ressourcen zwischen Prozessen wie ein Server-Handle.

Obwohl ich nicht genau weiß, wie Sie die Hunderte von Kindern verwenden möchten, würde ich empfehlen, die untergeordneten Elemente auf die Anzahl der auf dem Computer verfügbaren Kerne zu beschränken. Hunderte von Kindern zu erblühen, könnte die Leistung beeinträchtigen. Sie sollten sich auf die asynchrone Natur des Knotens verlassen, um die Skalierbarkeit zu bewältigen, und das Laichen von Arbeitern hilft nicht viel mehr als das Ausgleichen der Verarbeitungslast auf die verfügbaren CPUs.

+0

Obwohl dies technisch eine Antwort auf die Erstellung vieler Instanzen ist, ist dies wahrscheinlich nicht das, was das OP tun sollte. Sie sollten wahrscheinlich viele Benutzer haben, die einen Server verwenden, nicht viele Server. – jfriend00

+0

Oh, und Sie können auch nicht alle Server-Instanzen denselben Port hören lassen. – jfriend00

Verwandte Themen