2011-06-17 135 views
1

我有一个nowjs问题:nowjs - 拒绝客户端连接

你如何拒绝连接事件的事件处理程序的客户端连接?

我想在客户端连接时检查服务器上的某些值,然后决定是放弃连接还是让他连接。

OK,既然计算器莫名其妙地认为我的问题是,不知何故低于他们的质量标准,我会尝试加入一个代码示例...

everyone.on('connect', function(){ 
    if (!niceClient) { 
     // do something to kick him out 
    } 
}); 

在此先感谢!

+2

是,加入指示工作流中的代码示例(或多于一个)和优选为记录代码示例中,总是让一个更好的问题。我鼓励你甚至可以多加一点这个问题。 http://tinyurl.com/so-hints – jcolebrand

+0

是的,你是绝对正确的,但在这种情况下,代码示例对我来说似乎显得很荒谬。但我保证未来会更好,吸取教训。 – DasAntonym

回答

2

我不知道nowjs的具体细节,但使用普通的node.js,你可以做这样的事情:

var http = require('http') 
http.createServer(function (req, res) { 
    // ... 
}).on('connection', function(sock) { 
    if (!niceClient) { 
    sock.end(); // Close the client connection. 
    } 
}).listen(8080, 'localhost'); 

它看起来像nowjs只是包装一个节点HTTP服务器,因此推测这种'连接“事件监听器也将与该库一起工作。

+0

这实际上可能是太低级别来验证nowjs连接,因为nowjs的东西来自套接字连接。但感谢提示,它给了我一些想法来进一步检查这一点。 – DasAntonym

1

我现在发现访问控制在nowjs中还没有实现。这可能是后来增加的一个功能,但是现在还没有太多的工作要比实施本土解决方案。

我现在将解决这一如下:

所有相关动作是通过一组完成的(例如,“niceusers”)和成功验证之后,用户放置这一组。如果没有成功的验证,他仍然处于“冷静”状态,并且没有收到任何组织的沟通。

这解决了我的问题,但它可能不足以实现真正的访问控制。

仍然希望这可能有助于某人!

2

尝试这种

nowjs.on('connect', function(){ 
    nowjs.getClient(this.user.clientId, function(err){ 
     var address = this.socket.handshake.address; 
     //@todo test if ip is blocked or banned 
     console.log("New connection from " + address.address + ":" + address.port); 

     //bla bla bla .... 
      if (!niceClient) { 
       this.socket.end(); // Close the client connection. 
      }    
    }); 
}); 
相关问题