使用ntwitter在Node.js中多次调用Twitterstream媒体API

我有以下代码:

var access_token_key, access_token_secret, consumer_key, consumer_secret, get_twitter, listen, twitter; twitter = require('ntwitter'); consumer_key = 'bogus'; consumer_secret = 'fake'; // consumer access_token_key = 'falsey'; access_token_secret = 'unreal'; get_twitter = function(key, secret) { return new twitter({ consumer_key: consumer_key, consumer_secret: consumer_secret, access_token_key: key, access_token_secret: secret }); }; listen = function(feed) { var api = get_twitter(access_token_key, access_token_secret); return api.stream('statuses/filter', {track: feed.track}, function(stream) { console.log('setting up stream for %s', feed.track); stream.on('data', function(data) { console.log('data for %s', feed.track); console.log('\t' + data.user.screen_name + ': ' + data.text); }); stream.on('end', function(response) { console.log('ending stream for %s', feed.track); }); stream.on('destroy', function(response) { console.log('destroying stream for %s', feed.track); }); }); }; module.exports.listen = listen; 

当我打电话listen({track: 'superbowl'})它的作品。 欢呼! 它做一切小应用程序应该! 我在控制台中得到这个:

 setting up stream for superbowl data for superbowl user: tweet 

但是在那之后,我调用了listen({track: 'humble bundle'}) ,它设置了新的stream,但是发生了这种情况:

 setting up stream for humble bundle ending stream for superbowl destroying stream for superbowl data for humble bundle user: tweet 

我在这里做错了什么吗? 我还没有完全掌握Node或Twitter的一些概念吗?

访问和速率限制下的Twitterstream媒体API文档(https://dev.twitter.com/docs/streaming-api/concepts):

每个帐户可能只创build一个到Streaming API的常规连接。 从同一个帐户的后续连接可能会导致以前build立的连接断开连接。 过多的连接尝试,无论成功与否,都会导致客户端IP地址的自动禁止。 连续失败的连接将导致您的IP地址被所有Twitter访问列入黑名单。

也就是说,一次只能有一个stream连接。 为了获得两组结果,你需要改用listen({track: 'superbowl, humble bundle'}) 。 这意味着你不能改变你正在收听的内容,将不得不停止收听,修改查询并重新开始收听。