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
Antwort
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.
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
Oh, und Sie können auch nicht alle Server-Instanzen denselben Port hören lassen. – jfriend00
- 1. Wie du ein Java GUI Jframe duplizierst?
- 2. Wie du meine SQL-Ergebnisse duplizierst?
- 3. Wie du ein Redshift-Tabellenschema duplizierst?
- 4. Wie du Datensätze für Ecto duplizierst?
- 5. Wie du Code im Skriptblock duplizierst?
- 6. Wie du eine .xib-Datei duplizierst?
- 7. Wie du ein C-Makro duplizierst?
- 8. Wie du ein Ziel von Xcode 5 duplizierst?
- 9. Wie du einen Datensatz mit allen Abhängigkeiten duplizierst?
- 10. Wie du alle Jenkins Jobs duplizierst und umbenennst?
- 11. Wie du Python-Dataframe eins nach dem anderen duplizierst?
- 12. Wie du Benachrichtigungen zwischen nativer und progressiver Web-App duplizierst?
- 13. Wie du ein Java-Paket in IntelliJ in einem Schritt duplizierst und umbenennst?
- 14. Wie du eine Tabelle aus einer Vorlage duplizierst und die ID eines neuen Arbeitsblattes erhältst?
- 15. Wie du das Kategorie-Untermenü im Admin-Panel von WordPress duplizierst
- 16. Wie du Gruppen von Reihen in Pandas basierend auf der Anzahl in der Spalte duplizierst?
- 17. Wie du ein Bewegungskonstrukt von einem Element zu einem anderen duplizierst? JavaScript
- 18. Wie entscheidest du RxJava?
- 19. Wie schreibst du einen OAuth2-Server in Perl?
- 20. Wie konfigurierst du einen emailAdapter für parse-server?
- 21. Wie konfigurierst du Google Cloud Platform für europäische Server?
- 22. Wie aktivierst du einen Bit-Datentyp in SQL Server?
- 23. Wie installierst du einen ssh Server auf qnx?
- 24. Wie berührst du Koordinaten?
- 25. Wie lernst du Ajax?
- 26. Wie machst du IUnityContainer?
- 27. Wie aktualisierst du ckeditor?
- 28. Wie installierst du MP3agic?
- 29. Wie änderst du ansible_default_ipv4?
- 30. Wie dokumentierst du JavaScript?
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
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