【发布时间】:2014-09-20 13:04:39
【问题描述】:
我正在使用Twit 构建一个推特流,用户可以在其中更改客户端的搜索词。 搜索词将保存在缓冲区中,并根据 Twitter 重新连接规则添加到流中。
我的代码如下所示:
var Twit = require('twit');
var T = new Twit({
consumer_key: 'xxxxxxxxx'
, consumer_secret: 'xxxxxxxxx'
, access_token: 'xxxxxxxxx'
, access_token_secret: 'xxxxxxxxx'
})
var searchStr = "orange";
var stream = T.stream('statuses/filter', { track: searchStr });
setInterval(function(){
newSearchStr = getNewSearchStr();
stream.stop();
stream = T.stream('statuses/filter', { track: newSearchStr});
},60*5*1000);
io.sockets.on('connection', function(socket) {
//SAVE USER AND INTITIAL SEARCH CRITERIA
// ...
stream.on('tweet', function (tweet) {
socket.emit('data',tweet);
});
socket.on('setSearchStr', function (searchStr) {
//SAVE SEARCH TO BUFFER FOR getNewSearchStr() TO OBTAIN
});
});
我的问题是用新的搜索重新初始化流。
在 inteval 函数中,stream.stop() 确实会停止流(并且 stream.start() 也可以工作),但 stream = T.stream(... 会打开一个新连接,而不是更新当前连接。因此,用户正在收听的流被断开,并且用户停止接收数据,直到刷新浏览器。
关于如何使用 Twit 做到这一点的任何想法?客户之间有什么实际区别吗?其他建议?
编辑: a similiar question 的答案有一个过时的链接。我真的很想看到带有“说明如何更改谓词并使用户体验尽可能流畅”的页面
【问题讨论】:
标签: javascript node.js twitter socket.io