Frage

Okay, ich habe einen einfachen Testserver mit Socket.io in node.js. Mein Ziel ist es, denselben Server auf verschiedenen Ports auszuführen, um einige ausgewogene Bedingungen und Synchronisierungstests zu testen.

So sieht der Server aus:

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

Die Frage ist: Was ist der einfachste Weg, um die Portnummer in Chat.html zu bringen (siehe Kommentar im obigen Code)? Gibt es eine Möglichkeit, dies mit Knoten oder FS zu tun? Muss ich mit Vorlagen eingerichtet werden?

Ich frage mich, welcher Knoten mich mit der Abfragezeichenfolge tun wird. Könnte ich den Port nur dort einkleben und ihn mit JQuery aussuchen, sobald die Seite geladen wird?

Danke im Voraus!

War es hilfreich?

Lösung

HTML ist für statische Inhalte. Sie können also nicht für dynamische Inhalte verwenden. Der einfachste Weg ist also, Vorlagen wie EJS, Jade und JQuery -Vorlage zu verwenden.

Aber Sie möchten nicht, dass Sie den Inhalt von chat.html ändern können

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

Ich empfehle nicht so.

Andere Tipps

Dies ist eine alte Frage, entschied sich jedoch, sie noch mit einer mehr passenden Antwort zu beantworten.

Da Sie denselben Port sowohl auf dem HTTP als auch auf dem Socket.io anhören, können Sie das Skript im Client einfach ändern, um eine Verbindung zu derselben Adresse wie die Webseite zu verbinden, wie dies:

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

Wenn der Server nur ein normaler WebSocket -Server war, können Sie stattdessen Folgendes tun:

var socket = new WebSocket(window.location.href.replace('http', 'ws'));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top