gpt4 book ai didi

javascript - 更改推特流谓词(Node.js、socket.io)

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:26 24 4
gpt4 key购买 nike

我正在用 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

});
});

我的问题是使用新搜索重新初始化流。

在区间函数 stream.stop() 中确实停止了流(并且 stream.start() 也起作用)但是 stream = T.stream(... 打开一个新连接而不是更新当前连接。因此,用户正在收听的流将断开连接,用户将停止接收数据,直到刷新浏览器。

关于如何使用 Twit 执行此操作的任何想法?客户之间有任何实际差异吗?其他建议?

编辑:a similiar question的答案有一个过时的链接。我真的很想看到带有“说明如何更改谓词并使用户体验尽可能流畅”的页面

最佳答案

也许不是最佳实践,但我最终通过直接编辑流对象解决了问题:

setInterval(function(){
//check if criteria has changed
if(stream.params.track != searchStr){
console.log("Reconnecting with " + searchStr);

stream.stop();
stream.params.track = searchStr;
stream.start();
}
else {
console.log("Criteria unchanged");
}
},60*5*1000);

关于javascript - 更改推特流谓词(Node.js、socket.io),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25010563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com