在多个端口上运行node.js http服务器

请任何人都可以帮助我find如何获得node.js中的服务器套接字上下文,以便我知道请求来自我的服务器上的哪个端口号。 我可以读取服务器端口,如果我请求使用http标头,但我想通过networking和类似的套接字上下文告诉请求来自哪个端口号。

这里是示例代码:

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

req对象具有对底层节点套接字的引用。 您可以轻松获取此信息,请参阅http://nodejs.org/api/http.html#http_message_socket和http://nodejs.org/api/net.html#net_socket_remoteaddress

这里是你的示例代码修改,以显示本地和远程套接字地址信息。

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