Question

D'accord, j'ai un serveur de test simple mis en place à l'aide socket.io dans Node.js. Mon but est d'exécuter le même serveur sur quelques ports différents pour tester des conditions de charge équilibrée et des tests de synchronisation.

Voici ce que les regards du serveur comme:

var app = require('http').createServer(handler),
      io = require('socket.io').listen(app),
      fs = require('fs'),
      port = process.argv[1]; // listen on port number passed via command line

app.listen(port);

function handler (req, res) {
   console.log('request', {remotePort: req.connection.remotePort, remoteAddress: req.connection.remoteAddress, url: req.url});
   // how do I pass the port number here?
   fs.readFile(__dirname + '/chat.html',
         function (err, data) {
            if (err) {
               res.writeHead(500);
               return res.end('Error loading chat.html');
            }

            res.writeHead(200);
            res.end(data);
         });
}

io.sockets.on('connection', function (socket) {
   // do chatty stuff
});

La question est: quelle est la meilleure façon d'obtenir le numéro de port en chat.html (voir le commentaire dans le code ci-dessus)? Est-il possible de le faire avec nœud ou fs? Ai-je besoin express mis en place avec des modèles?

Je me demande ce noeud me permettra de faire avec la chaîne de requête; pourrais-je tenir le port là-bas et perceront avec jQuery une fois la page se charge?

Merci à l'avance!

Était-ce utile?

La solution

html est pour les contenus statiques. de sorte que vous ne pouvez pas utiliser pour les contenus dynamiques. donc plus simple est l'utilisation des modèles comme EJS, jade et modèle jquery.

mais vous ne voulez pas vous pouvez modifier le contenu de chat.html

function(err, data) {
  data = data.replace() // like this
}

Je recommande pas de cette façon.

Autres conseils

Ceci est une vieille question, mais a décidé de répondre avec une plus suiting réponse encore.

Parce que vous écoutez sur le même port sur les deux http et Socket.IO, vous pouvez simplement modifier le script sur le client de se connecter à la même adresse que la page Web a été chargé, comme suit:

var socket = io.connect(window.location.href);

Si le serveur était juste un serveur websocket normale, vous pourriez faire au lieu ceci:

var socket = new WebSocket(window.location.href.replace('http', 'ws'));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top