【问题标题】:Ruby on Rails PubNub subscribe as separate processRuby on Rails PubNub 作为单独的进程订阅
【发布时间】:2011-12-06 04:04:53
【问题描述】:

我曾考虑在我的网站上使用 PubNub。

反过来,我可以使用 PubNub 订阅频道。

但是,我需要找到一种方法来运行使用 PubNub 订阅频道的脚本。

例如,根据他们的文档http://www.pubnub.com/blog/ruby-push-api,它声明“要侦听已发布的消息,请调用 subscribe 函数。重要的是要注意:subscribe 函数是阻塞的。您需要在单独的过程。”

那么PubNub提供如下代码:

 ## Subscribe (Listen for Messages)
 pubnub.subscribe({
'channel ' => 'my_channel',
'callback' => lambda do |message|
    ## Message Received!!!
    puts(message['my_var']) ## print message
    return true             ## keep listening?
end
  })

我想不出办法将此函数作为“进程”运行。

没有类似后台作业的东西吗?这是我需要的吗?

感谢任何指导。

【问题讨论】:

  • 您只需创建一个单独的 Ruby 文件并在终端中从服务器的命令行运行它。但是在重新阅读您的问题之后,您似乎正在尝试通过浏览器应用程序从 Ruby/服务器端订阅。您将使用 Ruby 来提供包含将要订阅的 JavaScript 的网页,并且您可能在服务器上运行了一个单独的 Ruby 脚本/进程来发布消息,或者 JavaScript 客户端将在没有您的服务器参与其中 - 这是典型的用例。让我知道是否是这种情况。

标签: ruby-on-rails pubnub


【解决方案1】:

(目前)最好的开始方法是使用 Ruby EventMachine 异步 HTTP 请求方法和 PubNub HTTP REST API。

  1. EventMachine::Protocols::HttpClient2 -> http://eventmachine.rubyforge.org/EventMachine/Protocols/HttpClient2.html
  2. PubNub HTTP REST API -> http://www.pubnub.com/tutorial/http-rest-push-api

    conn = EM::Protocols::HttpClient2.connect 'pubsub.pubnub.com', 80
    req  = conn.get('/subscribe/SUBSCRIBE_KEY/CHANNEL/0/TIMETOKEN')
    

请注意,这不是一个完整的示例,而是一个很好的起点...您必须遵循 HTTP REST 指南。

【讨论】:

  • 你能解释更多吗?我将把这段代码放在哪里?例如,我创建了一个 .rb 文件,但是当我这样做时,我的网络浏览器只是坐在那里加载,因为它建立了连接
  • 最好遵循 EventMachine Protocols 中 HttpClient2 中提供的示例 - eventmachine.rubyforge.org/EventMachine/Protocols/…
  • ` EM.run{ conn = EM::Protocols::HttpClient2.connect 'pubsub.pubnub.com', 80 req = conn.get('/') req.callback{ |response| p(response.status) p(response.headers) p(response.content) } }`
  • PubNub 的文档非常糟糕。我想我不会再使用它了。
  • 我们认识到,在您发布此内容时,这些文档并不是最佳的(好的、可怕的和过时的)。如果还不算太晚,请再看看我们的文档。我想你会很高兴的。 pubnub.com/docs/ruby/pubnub-ruby-sdk - 也就是说,如果您(Brian Rosedale)同意,如果您能更新您的反馈,我们将不胜感激。如果没有,现在担心。
猜你喜欢
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
相关资源
最近更新 更多