Comment faire pour exécuter plusieurs node.js les serveurs

J'ai deux Express serveurs exécutant sur des ports différents. Le premier serveur (serveur web) offre d'un site web et le deuxième serveur (serveur de données) émet des données toutes les 100 ms à l'aide d'une douille.io.
Quand j'ouvre le site internet dans le navigateur de données s'affiche comme prévu. Mais alors quand j'ai ouvert le site web dans un navigateur, toutes les émissions de données dans le premier navigateur ralentit remarquablement bas jusqu'à ce que le deuxième navigateur est fait, le chargement du site.

Je devrais probablement mentionner que l'application est en cours d'exécution sur un Raspberry Pi. Le site web de temps de chargement n'est pas aussi critique, mais les données d'émission.

Est-il un moyen pour exécuter le node.js serveurs, de sorte qu'ils ne seront pas touchés par la charge sur chaque autres?

Droit maintenant, le serveur web est le principal app.js fichier est exécuté par le nœud et le serveur de données est un module requis par le serveur web. Quelque chose comme ceci:

app.js:

var express = require('express');
var data = require('data-server.js');

var app = express();

//Web server setup and handling (mostly Express defaults)

app.listen(3000);

module.exports = app;

data-server.js:

var app = require('express')();
var server = require('http').Server(app).listen(3001)
var io = require('socket.io')(server);

//Socket.io code that emits data every 100 ms

module.exports = io;

Mise à jour

S'avère que c'était ma requête de base de données qui a été tenue au nœud de sorte qu'il ne pouvait pas émettre parce que les émissions de fonction a été en attente pour la base de données pour être libre.

Pourquoi ne pas courir socket.io au cours de votre Express de la connexion? Aussi, êtes-vous en train de commencer un navigateur, ou êtes-vous juste d'ouvrir un nouvel onglet/fenêtre?
Je ne l'utilisation de socket.io sur un Express de la connexion, à moins que j'ai mal compris quelque chose, je suis nouveau à tout cela. J'ai commencé une nouvelle fenêtre de navigateur, le premier navigateur est google Chrome, et la prochaine est Safari.
Vous êtes à partir de deux serveurs, l'un sur 3000 et un sur 3001. C'est le superflu, vous pouvez exécuter le socket.io serveur sur le dessus de l'Express server qui s'exécute sur 3000. Le ralentissement peut être pas dû, mais comme Tristan le souligne dans sa réponse, au moins permet d'économiser des ressources.
Bon, maintenant, je l'ai eu. Je vous remercie. Donc, il y a tous les avantages de courir sur des ports différents à tous? Je n'ai pas été en mesure de trouver des lectures sur ce.
Il y a être des cas d'utilisation pour s'exécuter sur des ports séparés, mais je ne peux pas penser à tout désinvolte 🙂 (peut-être différents loadbalancer/proxy/cache chemins)

OriginalL'auteur KMK | 2015-04-10