Serveur http node.js en cours d’exécution sur plusieurs ports

S’il vous plaît, quelqu’un peut-il m’aider à savoir comment obtenir le contexte de socket de serveur dans node.js, afin que je sache que la demande est venue sur quel numéro de port sur mon serveur. Je peux lire le port du serveur si je demande à l’aide d’en-têtes http, mais je le veux via un réseau et quelque chose comme un contexte de socket qui indique que la demande est venue sur quel numéro de port.

Voici l exemple de code:

var http=require('http'); var url = require('url'); var ports = [7006, 7007, 7008, 7009]; var servers = []; var s; function reqHandler(req, res) { var serPort=req.headers.host.split(":"); console.log("PORT:"+serPort[1]);//here i get it using http header. } ports.forEach(function(port) { s = http.createServer(reqHandler); s.listen(port); servers.push(s); }); 

L’object req a une référence au socket de nœud sous-jacent. Vous pouvez facilement obtenir ces informations, comme documenté à l’ adresse suivante : http://nodejs.org/api/http.html#http_message_socket et http://nodejs.org/api/net.html#net_socket_remoteaddress

Voici votre exemple de code modifié pour afficher les informations d’adresse de socket locale et distante.

 var http=require('http'); var ports = [7006, 7007, 7008, 7009]; var servers = []; var s; function reqHandler(req, res) { console.log({ remoteAddress: req.socket.remoteAddress, remotePort: req.socket.remotePort, localAddress: req.socket.localAddress, localPort: req.socket.localPort, }); } ports.forEach(function(port) { s = http.createServer(reqHandler); s.listen(port); servers.push(s); });