2012-02-11 86 views
10

我有一個socket.io服務器的Node.js:「xhr-polling」配置在socket.io中做什麼?

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

// assuming io is the Socket.IO server object 
io.configure(function() { 
     io.set("transports", ["xhr-polling"]); 
     io.set("polling duration", 10); 
    }); 

io.sockets.on('connection', function(socket){ 
    console.log('connected: %s', socket.id); 
    ... 
} 

隨着XHR輪詢10秒輪詢時間,這是不是意味着一個新的連接將每10秒被調用?如果是這樣,如果用戶保持斷開連接,我如何跟蹤用戶?我在heroku上運行node.js。

回答

15

xhr-polling表示您的服務器將在等待接收到POST的任何GET時等待10秒,以便在應答之前它沒有答案,而不是發回空響應。所以,如果您的服務器在10秒後沒有任何信息要回復,它將回應一個空的迴應。 你可以在這裏閱讀更多:Long polling

我個人使用XHR輪詢作爲後備選項從WebSockets的在應用程序上nodejitsu(另一個節點託管像Heroku的),它是工作的罰款。唯一的事情是「on connection」事件需要3-8秒,而不是像我的WebSocket應用程序那樣瞬間完成。

在每個新輪詢中都沒有創建新連接,它只是每10秒向服務器發送一次GET或POST的方式,而不是每隔0.5秒輪詢一次服務器。一個「實時」應用程序。如果服務器在不到10秒的時間內回答,將會有另一輪投票來準備下一個答案。

我希望這會幫助你。 祝您有美好的一天。

3

socket.io自動重新連接客戶端。