2017-02-05 1 views
-1

Je suis nouveau sur Node.js, et Socket.io, et pour mon projet de développement web actuel, j'ai un salon de discussion Socket.io mis en place, et je dois être capable de faire beaucoup, beaucoup (potentiellement des centaines) d'instances séparées de celui-ci. Est-ce qu'il y a un moyen de faire ça?Comment dupliquer Node.js/Socket.io Server

+0

Mieux vaut vous expliquer quel est votre cas d'utilisation, afin que nous puissions vous conseiller davantage. En substance, vous devriez avoir une instance par serveur, donc si vous voulez des centaines d'instances, créez des centaines de serveurs. Mais il ne semble pas très naturel d'avoir des centaines d'instances socket.io. – Hosar

+0

Pourquoi n'utilisez-vous pas un seul serveur et que de nombreux clients l'utilisent? Il ne devrait pas y avoir de problème d'échelle avec le serveur de chatroom. Vous devriez être capable d'héberger des milliers d'utilisateurs avec un serveur. C'est le cas d'utilisation normal pour un serveur. – jfriend00

Répondre

0

La génération d'un processus enfant dans un noeud est assez simple, surtout s'il s'agit d'un autre processus de noeud.

child_process.fork est l'une des options disponibles

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); 
 
});

Vous pouvez également regarder cluster, il utilise child_process.fork pour frayer les enfants, mais a des fonctionnalités supplémentaires construit sur le dessus pour automatiquement partager des ressources entre les processus, comme un handle de serveur.

Bien que je ne sache pas exactement comment vous prévoyez d'utiliser les centaines d'enfants, je recommande de limiter les enfants au nombre de cœurs disponibles sur la machine. Frayer des centaines d'enfants pourrait nuire à la performance. Vous devez vous fier à la nature asynchrone des nœuds pour gérer l'évolutivité. La génération de serveurs ne permet pas vraiment d'équilibrer la charge de traitement sur les processeurs disponibles.

+0

Bien que ce soit techniquement une réponse à la création de beaucoup d'instances, ce n'est probablement pas ce que le PO devrait faire. Ils devraient probablement avoir beaucoup d'utilisateurs utilisant un serveur, pas beaucoup de serveurs. – jfriend00

+0

Oh, et vous ne pouvez pas non plus avoir toutes ces instances de serveur écoutant le même port non plus. – jfriend00