显示多个客户端连接的服务器(net nodejs)

时间:2014-10-24 09:11:11

标签: node.js http

我正在尝试创建一个服务器,该服务器在面向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"控制台上的消息。任何人都可以帮助我理解为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

每当浏览器连接到网站时,它通常会发出两个请求:正常并检索favicon

有趣的是,favicon请求甚至没有显示在浏览器开发人员工具中。

要验证,您需要提取请求,将其打印到服务器,然后观察您收到多个请求的原因。为此,connection可能为时过早,请尝试挂钩request事件:

server.on('request', funtion(req, res) { console.log(req.url); });