我正试图在node.js中创建一个基本的应用程序:( a)在twitter中跟踪一个关键字,并临时存储与该关键字相关的消息;( b)在足够多的消息积累之后,将其返回给用户。我在使用ntwitter库。
我已经在我的客户端和服务器端实现了一个基本的长轮询系统,但是我在验证方面遇到了一些困难。按照我当前设置它的方式,每次调用/api/streamfeed时,它都会验证用户,所以在检查流之前,可能每30秒一次(因为我有30多个超时计划)。我认为这会给我带来麻烦,因为我认为验证是有限的?有没有一种方法可以检查我是否被验证,而不需要点击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);
});
})
});
});
发布于 2014-05-24 01:04:33
我会把证件寄回来然后再重发一次..。这可能是一个bool,或实际使用的凭据。这些不是你的私钥什么的,只有用户的。
也可以在标题和cookie中发送,并进行适当的散列等。
这只是简单地显示了一个应该工作的模式。
客户端:
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()
});
});
https://stackoverflow.com/questions/23828383
复制相似问题