【问题标题】:node.js, faye (bayeux) - after subscribe eventnode.js, faye (bayeux) - 订阅事件之后
【发布时间】:2012-10-04 13:55:40
【问题描述】:

我有一个聊天服务器。在客户订阅后,我想查看数据库以查看他们订阅的聊天室是否有任何历史记录。

问题是,我只能在必须执行“返回回调(消息)”的扩展中捕获“订阅”事件;返回消息。如果我在这里执行历史记录,则不会向客户端发布任何内容,因为客户端实际上并未被订阅。

有什么方法可以知道客户何时准备好?还是订阅成功时发生的一些事件?

谢谢!

【问题讨论】:

    标签: node.js chat real-time faye bayeux


    【解决方案1】:

    您可以在创建订阅后附加一个回调,该回调将在您订阅成功时触发,在您订阅失败时触发:

    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。只需使用此处的扩展程序并查找来自特定客户端的订阅事件,您就可以开始了。

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多