请任何人帮我看看如何在node.js中获取服务器套接字上下文,以便我知道请求来自我服务器上的哪个端口号.
我可以读取服务器端口,如果我请求使用http标头,但我想通过网络和类似套接字上下文,它告诉请求来自哪个端口号.
我可以读取服务器端口,如果我请求使用http标头,但我想通过网络和类似套接字上下文,它告诉请求来自哪个端口号.
以下是示例代码:
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,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); });