Domanda

Va bene, ho un semplice server di prova configurato con socket.io in node.js. Il mio obiettivo è quello di eseguire lo stesso server su un paio di porte diverse per testare alcune condizioni equilibrato di carico e di sincronizzazione.

Ecco cosa gli sguardi server come:

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 domanda è: qual è il modo più semplice per ottenere il numero della porta in chat.html (vedi commento in codice di cui sopra)? C'è un modo per fare questo con nodo o fs? Devo espresso impostato con i modelli?

Wonder quale nodo mi lascia fare con la stringa di query; potrei solo bastone il porto in là e prenderlo fuori con jQuery, una volta caricata la pagina?

Grazie, in anticipo!

È stato utile?

Soluzione

HTML è per i contenuti statici. quindi non è possibile utilizzare per i contenuti dinamici. così modo più semplice è utilizzare i modelli come ejs, giada e template jquery.

, ma non si desidera è possibile modificare i contenuti da chat.html

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

Non mi raccomando questo modo.

Altri suggerimenti

Questa è una vecchia questione, ma ha deciso di rispondere con un altro atto a soddisfare risposta ancora.

Perché si sta ascoltando sulla stessa porta sia sul http e socket.io, si può semplicemente modificare lo script sul client per connettersi allo stesso indirizzo della pagina web è stata caricata, in questo modo:

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

Se il server era solo un server websocket normale, si potrebbe fare invece questo:

var socket = new WebSocket(window.location.href.replace('http', 'ws'));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top