我有一个关于nowjs的问题:
如何拒绝来自connect事件的事件处理程序的客户端连接?
我想在客户端连接时检查服务器上的某些值,然后决定是断开连接还是让他连接。
好的,因为stackoverflow不知何故认为我的问题低于他们的质量标准,我会尝试添加代码示例...everyone.on('connect', function(){
if (!niceClient) {
// do something to kick him out
}
});
提前感谢!
答案 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”)完成的,并且在成功验证后,用户被置于该组中。如果没有成功的验证,他仍然处于“不确定状态”,并且不接受任何小组的沟通。
这解决了我的情况,但它可能不足以实现真正的访问控制。
仍然希望这可以帮助别人!