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