Pregunta

De acuerdo, tengo un simple servidor de prueba configurado usando Socket.io en Node.js. Mi objetivo es ejecutar el mismo servidor en algunos puertos diferentes para probar algunas condiciones de carga equilibradas y pruebas de sincronización.

Así es como se ve el servidor:

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 pregunta es: ¿Cuál es la forma más fácil de poner el número de puerto en chat.html (vea el comentario en el código anterior)? ¿Hay alguna forma de hacer esto con nodo o FS? ¿Necesito expresar la configuración con plantillas?

Me pregunto qué nodo me dejará hacer con la cadena de consulta; ¿Podría meter el puerto allí y elegirlo con jQuery una vez que se cargue la página?

¡Gracias por adelantado!

¿Fue útil?

Solución

HTML es para contenido estático. Entonces no puede usar para contenido dinámico. Así que la forma más fácil es usar plantillas como EJS, Jade y JQuery Plantilla.

pero no quieres que puedas cambiar el contenido de chat.html

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

No recomiendo de esta manera.

Otros consejos

Esta es una pregunta antigua, pero decidió responderla con una respuesta más adecuada.

Debido a que está escuchando en el mismo puerto tanto en HTTP como en Socket.io, puede cambiar el script en el cliente para conectarse a la misma dirección que se cargó la página web, como así:

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

Si el servidor fuera solo un servidor WebSocket normal, podría hacer esto:

var socket = new WebSocket(window.location.href.replace('http', 'ws'));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top