如何结束对Twitter流API的npm oauth.get请求的流式响应



如何停止对此get请求的流式响应?起初,我使用了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              
         });
    });

这很好,水流如期而至。关闭它是唯一的问题。非常感谢!

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

    stream.abort();

为了上下文/澄清:我有一个前端ajax请求触发断开连接。如果你确实使用了中止,请确保你将其隔离到你知道用户(或者你,作为管理员,或者你正在管理流)想要断开与Twitter的连接时。(这可能是显而易见的;我想说得很清楚,如果不是这样的话——不想让你认为中止应该立即紧跟在OP代码块的末尾。)

关于公共流API 1.1断开连接的一般主题,请注意:Twitter强调他们不希望频繁断开连接/重新连接(请参见本页底部)。我问了我的OP问题,最初打算为每个用户制作一个定制的流,所以如果你正在考虑这个问题,那么你可能也在考虑同样的事情。不幸的是,Twitter的公共流并不支持这一点。Womp Womp。

最新更新