我正在尝试使用Express,Socket.io和ntwitter模块构建一个简单的Node应用程序,因此您只需搜索一个术语(这是req。下面的params.searchTerm)和ntwitter将搜索它并通过socket.io输出流。Express/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;
}
});
}
);
});
});
我觉得插座.io事件应该在res.render回调之外进行管理。就像现在一样,每次有人加载页面'/:stream'时,都会设置socket.io的onconnection事件。 – billy