使用Rails进行流式处理API无法获得流式数据



我正在尝试从rails应用程序中的Twitter Streaming API获取数据,我已经创建了自己的模块,该模块为我提供twitter Authorization Head。我可以获得授权,但我没有得到回复。。。我看到的只是处于pending状态的请求(我猜测它的流和连接没有关闭)。我可以对下面的代码做些什么,这样我就可以开始打印从流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

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

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

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

相关内容

  • 没有找到相关文章

最新更新