Нello! 我想代表了与节点HTTP客户端连接。 现在,我有这样的:
let names = [ 'john', 'margaret', 'thompson', /* ... tons more ... */ ];
let nextNameInd = 0;
let clientsIndexedByIp = {};
let createNewClient = ip => {
return {
ip,
name: names[nextNameInd++],
numRequests: 0
};
};
require('http').createServer((req, res) => {
let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
// If this is a connection we've never seen before, create a client for it
if (!clientsIndexedByIp.hasOwnProperty(ip)) {
clientsIndexedByIp[ip] = createNewClient(ip);
}
let client = clientsIndexedByIp[ip];
client.numRequests++;
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(client));
}).listen(80, '<my public ip>', 511);
我运行了一些远程服务器上的代码,并能正常工作; 我可以查询该服务器,并得到预期的回应。 但我有一个问题:我的笔记本电脑和智能手机都连接到相同的WiFi; 如果我查询来自我的笔记本电脑和智能手机该服务器的服务器认为,这两个设备有相同的IP地址,并只创建一个“客户”对象对他们两个。
例如,响应的“名称”参数是每个相同的。
检查whatsmyip.org我的笔记本电脑和智能手机上都显示我相同的IP地址 - 这让我吃惊,因为我的IP地址的了解竟然是错的。 直到这时我以为所有的设备有一个唯一的IP。
我想不同的设备成为不同客户相关的,即使两个设备是相同的WiFi网络。 我假定数据我使用的歧义的装置,它们单独请求IP( req.headers['x-forwarded-for'] || req.connection.remoteAddress
),是不充分的。
我怎样才能连接到同一个路由器多台设备之间的区别? 有数据在一些额外的比特req
对象,它允许吗?
抑或只是网络配置错误,无论我的笔记本电脑和智能手机具有相同IP地址的情况?
谢谢!