nowjs – 拒绝客户端连接
我有一个nowjs问题:
你如何拒绝连接事件的事件处理程序的客户端连接?
我想在客户端连接时检查服务器上的一些值,然后决定是否放弃连接或让他连接。
好吧,因为stackoverflow以某种方式认为我的问题是低于他们的质量标准,我会尝试添加代码示例…
everyone.on('connect', function(){ if (!niceClient) { // do something to kick him out } });
提前致谢!
我不确定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服务器,所以大概这种“连接”事件监听器也将与该库工作。
尝试这个
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. } }); });
我现在发现,在nowjs中访问控制还没有实现。 这可能是后来增加的一个function,但是到目前为止,实现自主开发的解决scheme并没有太多的事情要做。
我现在将解决这个问题如下:
所有相关的操作都是通过一个组(例如“niceusers”)完成的,并且在成功validation之后,用户被放置在这个组中。 如果没有成功的validation,他仍然处于“冷静”状态,没有收到任何组织的沟通。
这解决了我的情况,但它可能不足以实现真正的访问控制。
仍然希望这可以帮助别人!