我正在尝试创建一个服务器,该服务器在面向Internet的端口上进行侦听,并将传入的http请求转发到在另一个端口侦听的内部快速服务器。以下是我使用的代码的相关部分。
var net = require('net');
var server = net.createServer();
server.listen(addr.from[3], addr.from[2], function(){
console.log('Server listening');
});
server.on('connection',function(from){
console.log('Client connected from '+ from.remoteAddress);
var to = net.createConnection({
host: addr.to[2],
port: addr.to[3]
});
from.pipe(to);
to.pipe(from);
from.on('error',function(err){
winston.error('Error at unix box'+err);
to.end();
});
to.on('error',function(err){
winston.error('Error at middleware server'+err);
from.end();
});
from.on('end',function(){
console.log('Client disconnected ');
to.end();
});
to.on('end',function(){
console.log('Middleware disconnected');
from.end();
});
});
我遇到的问题是,当我打开" ip:port"在浏览器中(这将是面向互联网的端口)我收到多个消息"客户端从xxxxxx"控制台上的消息。任何人都可以帮助我理解为什么会这样吗?
答案 0 :(得分:1)
每当浏览器连接到网站时,它通常会发出两个请求:正常并检索favicon
。
有趣的是,favicon
请求甚至没有显示在浏览器开发人员工具中。
要验证,您需要提取请求,将其打印到服务器,然后观察您收到多个请求的原因。为此,connection
可能为时过早,请尝试挂钩request
事件:
server.on('request', funtion(req, res) { console.log(req.url); });