使用Rails的Streaming API无法获取流数据

时间:2016-05-18 19:18:21

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

我正在尝试从我的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

1 个答案:

答案 0 :(得分:0)

因为Twitter是&#34;流媒体&#34;数据并未关闭连接,您的RestClient请求未结束且您的show操作已暂停,而不是&#34;结束&#34;。因此,rails无法继续并呈现默认的main/show.html.erb页面。

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

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