我有一个聊天服务器。在客户订阅后,我想查看数据库以查看他们订阅的聊天室是否有任何历史记录。
问题是,我只能在扩展中捕获“订阅”事件,这些事件必须执行“返回回调(消息);” 返回消息。如果我在这里执行历史记录,则不会向客户端发布任何内容,因为客户端实际上并未被订阅。
有什么方法可以知道客户何时准备好?或者成功订阅时发生的一些事件?
谢谢!
您可以在创建订阅后附加一个回调,该回调将在您成功订阅时触发,在您订阅失败时触发:
var http = require('http');
var faye = require('faye');
var faye_server = new faye.NodeAdapter({mount: '/faye', timeout: 120});
faye_server.listen(8089);
var subscription = faye_server.getClient().subscribe('/testing', function(message){console.log(message);});
subscription.callback(function(){console.log('Subscription successful and ready to use!');});
subscription.errback(function(){console.log('ERROR: Subscription failed!');});
这记录在 faye 主页上,尽管它被隐藏了一点。. . http://faye.jcoglan.com/browser/subscribing.html
这适用于我测试过的节点服务器、节点客户端或浏览器客户端。
此外,我一直在做的是确保我的客户端启动并运行是这样的:创建客户端,然后尝试订阅垃圾通道名称。一旦该订阅出现、失败或超时(在它周围设置 5 秒超时),我将其视为我的客户打开成功。这是一个关于方法的循环,但它对我来说效果很好,faye 通过使用回调和 errback 让它变得非常干净,就像在我之前的示例中一样。
现在这一切都在客户端,但在服务器端变得容易得多:http: //faye.jcoglan.com/node/monitoring.html。只需使用此处的扩展程序并查找来自特定客户端的订阅事件,您就可以开始了。
希望有帮助