nowjs - 拒绝客户端连接

时间:2011-06-17 14:33:48

标签: javascript node.js nowjs-sockets

我有一个关于nowjs的问题:

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

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

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

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

提前感谢!

3 个答案:

答案 0 :(得分:2)

我不确定nowjs的细节,但是使用plain 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服务器,所以大概这种“连接”事件监听器也可以使用该库。

答案 1 :(得分: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.
           }               
    });
});

答案 2 :(得分:1)

我现在发现,在nowjs中尚未实现访问控制。这可能是以后添加的功能,但截至目前,除了实现本土解决方案外,没有什么可做的。

我现在解决这个问题如下:

所有相关操作都是通过一组(例如“niceusers”)完成的,并且在成功验证后,用户被置于该组中。如果没有成功的验证,他仍然处于“不确定状态”,并且不接受任何小组的沟通。

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

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