2011-11-09 64 views
1

在我的網站我有所有在線用戶的列表,通過Node.js的實時更新之間的連接(我使用now.js)Node.js加載如何讓頁面載入

的問題是,當用戶瀏覽我的網站時,他們當然會在新頁面加載時斷開幾秒鐘。這意味着它們會從所有其他客戶端的列表中消失,並在幾秒鐘後重新出現。

有什麼辦法可以設置斷開連接功能的超時時間,例如:如果用戶在30秒內未重新連接,請從列表中刪除,否則不要?

或者如果有更好的方法來實現這個目標?可有人請點我在正確的方向:)

編輯:

想出了一個可行的解決方案,如果有人想知道。在服務器端我有這個功能

nowjs.on('disconnect', function() { 
    everyone.now.clientDisconnected(); 
}); 

其中只要用戶斷開連接客戶端上的調用此函數

now.clientDisconnected = function() { 
    setTimeout(function() { now.serverUpdateUsers(); }, 20000); 
} 

因此,而不是更新的用戶馬上,我們等待20秒。屆時用戶應完成加載新頁面,並且所有其他客戶端都不會顯示任何差異。

serverUpdateUsers();是收集所有用戶數據並將其推送給所有客戶端的服務器功能。

回答

0

我不確定是否可以使用now.js(使用Socket.IO)修改Socket.IO的設置,但是如果可以(不確定,從未使用now.js)應該設置心跳間隔要大些:

​​

心跳間隔默認爲20秒

+0

是的,也許是個好主意。但我真的不知道他們是如何相互作用的。上面提出了一個簡單的解決方案...也許不是最佳的,但它的工作原理 – hampusohlsson