【问题标题】:Streaming API with Rails not able to get streamed data使用 Rails 的流式 API 无法获取流式数据
【发布时间】:2016-05-18 19:18:21
【问题描述】:

我正在尝试从我的 rails 应用程序中的 Twitter Streaming API 获取数据,并且我创建了自己的模块,该模块为我提供了 twitter Authorization Head。我能够获得授权,但我没有得到回复......我看到的只是pending 状态的请求(我猜它的流媒体和连接没有被关闭)。我可以对下面的代码做些什么,以便我可以开始打印从 Streaming API 获得的响应?

    class MainController < ApplicationController
      include Oauth::Keys

      def show
        @oauth_signature_string = Oauth::Signature.generate(signature_params)
        @header                 = Oauth::HeaderString.create(header_params)

        RestClient::Request.execute(method: :GET, url: 'https://stream.twitter.com/1.1/statuses/sample.json', :headers => {:Authorization => %Q(OAuth ****************************)} )

      end
    end

【问题讨论】:

    标签: ruby-on-rails http twitter streaming twitter-streaming-api


    【解决方案1】:

    因为 Twitter 正在“流式传输”数据而不是关闭连接,所以您的 RestClient 请求没有结束,您的 show 操作挂在那里而不是“完成”。因此,rails 无法继续并呈现默认的main/show.html.erb 页面。

    因此,您可能想查看ActionController::Streaming 类,看看是否可以重写视图和 HTTP 调用以利用它。或者,使用非流式 API 边缘会更容易。

    此外,您所做的似乎更适合 javascript。您可能希望使用 Twitter 的官方 Javascript api 来执行所有身份验证和状态流。

    【讨论】:

    • 嘿@Uzbekjon ..我也试过render stream: true。但没有运气。你能指出任何例子或调整我的代码吗
    • 不仅仅是添加stream: true。你也必须改变你的看法。我的答案中的链接解释并提供了示例。我建议坚持使用非流式 API 边缘。
    • 对于新手问题我很抱歉,但什么是非流式 API 边缘?有任何链接吗?或者你只是提到像 REST api ?
    • 是的,我的意思是 REST api。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2016-11-29
    • 2015-04-18
    相关资源
    最近更新 更多