gpt4 book ai didi

node.js - express /Socket.io : The right way for one socket per request

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:56 25 4
gpt4 key购买 nike

我正在尝试使用 Express、Socket.io 和 ntwitter 模块构建一个简单的 Node 应用程序,这样您只需搜索一个术语(下面是 req.params.searchTerm),ntwitter 将搜索它并输出通过 socket.io 流式传输。

不过,我遇到了错误,打开了多个窗口,或者关闭了一个窗口然后立即打开了一个窗口。有时搜索词没有更新,有时实际上会抛出某种 socket.io 错误。有人可以阐明执行此操作的正确方法或阐明我的错误吗?提前致谢。代码如下。

var server = http.createServer(app);

var io = require('socket.io').listen(server);

server.listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});

app.get('/:stream', function(req, res) {
res.render('stream', { title: 'Search Twitter | ' + req.params.searchTerm });
io.sockets.on('connection', function(socket) {

var publishFlag = true;
setInterval(function() {
publishFlag = true;
}, 1000);

twit.stream('statuses/filter', { track: [req.params.searchTerm] },
function(stream) {
stream.on('data', function(tweet) {
if(publishFlag) {
socket.emit('tweet', tweet);
publishFlag = false;
}
});
}
);
});
});

最佳答案

它认为这在某种程度上是您想要做的:

服务器端:

var server = http.createServer(app);

var io = require('socket.io').listen(server);

server.listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});

app.get('/:stream', function(req, res) {
res.render('stream', { title: 'Search Twitter | ' + req.params.searchTerm });
});

io.sockets.on('connection', function(socket) {

socket.on('stream', function(searchTerm){

twit.stream('statuses/filter', { track: [searchTerm] },
function(stream) {
stream.on('data', function(tweet) {
socket.emit('tweet', tweet);
});
}
);
};
});

客户端(/:流)

var socket = io.connect('http://localhost');
socket.on('tweet', addTweetOnPage);
socket.emit('stream', searchTerm);

关于node.js - express /Socket.io : The right way for one socket per request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12376928/

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