避免对Twitter API进行多重validation(node.js)

我试图在node.js中创build一个基本应用程序a)在twitter中跟踪关键字,并临时存储与该关键字相关的消息,b)在积累了足够的消息之后,将其返回给用户。 我正在使用ntwitter库。

我有一个基本的长轮询系统在我的客户端和服务器端实现,但是我在validation时遇到了一些麻烦。 我现在设置它的方式是,每次调用/ api / streamfeed时都会validation用户,所以在检查stream之前可能每隔30秒(因为我有30秒的超时时间表)。 我认为这会让我陷入麻烦,因为我认为validation速度有限? 有没有一种方法来检查我是否validation,而不必ping通Twitter的API(也许在第一次尝试后存储一个布尔值)?

客户端:

//upon receiving a response, poll again function getStreamFeed() { console.log('calling getStreamFeed'); $http.get('/api/streamfeed').success(function(data) { console.log(data) getStreamFeed(); }); }; setTimeout(getStreamFeed, 1000); Server side: app.get('/api/streamfeed', function(req, res) { /* ... polling code ... */ twit.verifyCredentials(function(err, data) { if (err) res.send(404); twit.stream('statuses/filter', { track: 'justin bieber' }, function(stream) { stream.on('data', function(data) { console.log(data.text) messages.push(data.text); }); }) }); }); 

我会发回凭证,并重新发送它们…这可能是一个布尔,或实际的凭据使用。 这些不是你的私钥或任何东西,只有用户的。

也可以发送在标题和cookies,并适当散列等。

这只是简单地显示一个应该工作的模式。

客户端:

 function getStreamFeed(credentials) { //upon receiving a response, poll again console.log('calling getStreamFeed'); var url = '/api/streamfeed'; if (credentials) { url += '&credentials=' + credentials; } $http .get(url) .success(function(data) { console.log(data) getStreamFeed(true); }); }; setTimeout(getStreamFeed, 1000); 

服务器端:

 app.get('/api/streamfeed', function(req, res) { function twitStream () { twit.stream('statuses/filter', {track: 'justin bieber'}, function(stream) { stream.on('data', function(data) { console.log(data.text) messages.push(data.text); }); } } var credentials = req.query.credentials; if (credentials) { twitStream() } twit.verifyCredentials(function(err, data) { if (err) res.send(404); twitStream() }); });