【问题标题】:Asynchronous callbacks - PubNub, EventMachine, Rails异步回调 - PubNub、EventMachine、Rails
【发布时间】:2012-09-18 02:13:08
【问题描述】:

我正在通过 EventMachine 订阅 PubNub 频道,但是我目前只收到一条且只有一条发布到该频道的消息。

EventMachine.run {
pubnub.subscribe({
'channel'  => @channel,
'callback' => lambda do |message|
puts(message)
end  
})
}

换句话说,我正在寻找一种使回调“更加”异步的方法。我想我可以将它包装在一个periodic_timer 中,但我对这种方法有一种不好的感觉。我现在应该在这个领域有什么最佳实践吗?

编辑: 我的问题的解决方案是,首先,在订阅循环中添加'return true',以便它继续收听。但更重要的是,在一个新线程中生成 EM,该线程侦听所需的任何通道,然后将其全部分派到客户端侦听的一个通道。这解决了我在没有服务器或客户端冻结/超时/溢出的情况下处理多个通道的问题。见http://www.pubnub.com/blog/ruby-push-api

【问题讨论】:

    标签: ruby-on-rails eventmachine pubnub


    【解决方案1】:

    全新的、完全重写的 PubNub 3.3 版 gem 将在 24 小时内发布。

    我会在它发布时提醒您,如果您在使用这个新 gem 时遇到任何问题,我们将从那里解决问题。

    杰瑞米

    【讨论】:

    • 甜蜜。是的,请让我知道它什么时候上线,不要害羞地花几个小时在新秀级别的 RoR 文档上:)
    • 它现已发布! rubygems.org/gems/pubnub-ruby请求核心是原生EM。
    • @Oskare,刚刚签到,你有机会测试这个新版本吗?
    • 谢谢伙计。我实际上正在努力解决如何连接 EventMachine 和 PubNub 以作为一个单独的进程运行(很像这个人 stackoverflow.com/questions/8395198/…)所以还没有真正有机会尝试新的 gem。在“常规”事件机器循环中订阅时,我在大约 1 分钟后超时,一切都崩溃了。如果您对此有任何建议,我们将不胜感激。
    • @oskare 您能否通过电子邮件向 pubnub 的支持人员发送一段最少的代码/应用程序来重现您遇到的问题?我很乐意看看,看看我们是否能帮您解决。
    【解决方案2】:

    我忘了补充:

    return true
    

    它现在继续收听。几分钟后堆栈溢出,但这是另一个问题。

    【讨论】:

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