2012-05-05 58 views
2

不同的連接我有一個node.js的應用程序,「流」微博給用戶。目前,它只是在Twitter上搜索硬編碼的字符串,但我希望允許用戶在URL中配置它(例如,通過訪問/?q=stackoverflow)。的Node.js和socket.io:針對不同的「會話」

此刻,我的代碼看起來有點像這樣:

app.get('/', function (req, res) { 

    // page rendering skipped 

    io.sockets.on('connection', function (socket) { 
     twit.stream('user', {track: 'stackoverflow'}, function(stream) { 
      stream.on('data', function (data) { 
       socket.volatile.emit('tweet', data); 
      } 
     }); 
    }); 
}); 

的問題是,我怎麼讓這個每個用戶都可以看到微博同時的不同的流?目前,它在單個瀏覽器選項卡中可以正常工作,但一旦打開第二個選項卡時就會崩潰 - 並且該錯誤在socket.io中相當深。我濫用了嗎?

我還沒有完全得到我的頭周圍socket.io還,所以這可能是問題。

在此先感謝!

回答

0

每當有新的請求進入時,您都將使用io.sockets.on重新定義連接回調 - 您應該在io對象的初始化語句之後將該代碼塊移出app.get之外。

+0

不過,如果'io.sockets.on'超出'app.get',我該如何改變什麼發出來的插座? –

+0

不知道你想改變什麼,但你確實意識到app.get處理http請求,而socket.io處理websocket請求的權利?您正在定義不同協議的請求處理程序中的一個協議的請求處理程序。 node.js的方式是有一個你傳遞和修改的全局狀態。 – snez