1

我有一个nowjs问题:

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

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

好的,因为stackoverflow不知何故认为我的问题低于他们的质量标准,我会尝试添加一个代码示例......

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

提前致谢!

4

3 回答 3

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 服务器,所以大概这种“连接”事件侦听器也可以与该库一起使用。

于 2011-06-17T18:20:09.373 回答
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.
           }               
    });
});
于 2012-01-03T22:43:46.850 回答
1

我现在发现 nowjs 中还没有(还)实现访问控制。这可能是以后添加的功能,但到目前为止,除了实施本土解决方案外,没有什么可做的。

我现在将按如下方式解决此问题:

所有相关操作都通过一个组(例如“niceusers”)完成,并且在成功验证后,用户被放置在该组中。如果没有成功的验证,他将继续处于“边缘”状态,并且不会收到该组的任何通信。

这解决了我的情况,但对于真正的访问控制可能还不够。

仍然希望这可以帮助某人!

于 2011-06-20T10:18:25.773 回答