【问题标题】:How to end the streaming response to an npm oauth.get request to Twitter stream API?如何结束对 Twitter 流 API 的 npm oauth.get 请求的流式响应?
【发布时间】:2016-07-26 05:41:07
【问题描述】:

如何停止对此获取请求的流式响应?起初我使用 npm twitter,你有一个 .destroy() 方法来杀死流,但想更好地理解这个过程(这里是 node newb)所以只使用了 npm oauth,然后是核心 Node 代码。我在 oauth 的文档中找不到与 twitter 的 .destroy() 类似的方法。

    stream = oauth.get('https://stream.twitter.com/1.1/statuses/filter.json?&track=meaningoflife', 
                             process.env.TWITTER_ACCESS_TOKEN_KEY, 
                             process.env.TWITTER_ACCESS_TOKEN_SECRET);

    stream.end(); 

    stream.addListener('response', function(twitResponse){ 
         twitResponse.addListener('data', function(data){
             //consume stream here              
         });
    });

效果很好,流按预期进入。关闭它是唯一的问题。 非常感谢!

【问题讨论】:

    标签: node.js twitter oauth get streaming


    【解决方案1】:

    简单的答案,对于任何有类似问题的人:将流视为普通节点 https/http 获取请求,使用 .abort() 终止与 Twitter 的连接。看起来像:

        stream.abort();
    

    为了上下文/澄清:我有一个前端 ajax 请求触发断开连接。如果您确实使用它,请确保将中止隔离到当您知道用户(或您,作为管理员,或者您正在管理您的流)想要断开与 Twitter 的连接时。 (这可能很明显;我想明确说明,如果不是这样 - 不希望您认为中止应该立即跟随 OP 代码块的结尾。)

    关于从公共流 API 1.1 断开连接的一般主题,请注意:Twitter 强调他们不希望频繁断开/重新连接(see bottom of this page)。我问了我的 OP 问题,最初打算为每个用户制作一个定制的流,所以如果你正在看这个,那么你有机会考虑同样的事情。不幸的是,Twitter 的 Public Stream 确实不支持这一点。呜呜呜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2014-11-28
      • 1970-01-01
      • 2020-01-14
      相关资源
      最近更新 更多