2013-02-19 82 views
2

是否有可能在服務器端捕獲非活動用戶會話? 我使用兩個intervalls構建了一個解決方案,但這使得我的頁面每20秒更新一次,因爲客戶端每20秒推送一次他的聯機狀態。我知道Meteor.logout([callback])函數,但我必須檢測到客戶端正在關閉瀏覽器窗口而不登出的天氣。我找到了meteor client user sessions demo,但這並沒有我需要的功能。有沒有解決方案呢?在服務器端捕獲用戶斷開連接

回答

2

時退房meteor-profile-online包(您需要安裝meteorite):

Profile.online是流星智能包裝提供了方便的方式來揭露帳戶的在線狀態。

它添加了profile.online屬性的用戶對象,這是由您可以配置的保持有效切換。

它使用您在問題(輪詢)中提到的相同方法,但這是真正實現它的唯一方法。至少這個軟件包將它很好地整合到流星中,並與被動的Meteor.keepalive相結合。

2

我想通了一種方法來捕捉使用websocket的斷開連接。這不會使用輪詢來保持狀態爲在線狀態。基本上,你犯了一個任意的發佈和訂閱它在客戶端:

Meteor.publish "statusWatcher", -> 
    id = @_session.userId 
    @_session.socket.on "close", Meteor.bindEnvironment(-> 
    Meteor.users.update id, 
     $set: {'profile.online': false} 

一如往常,這是受流星API的變化,但您可以安裝這是一個聰明的包裝和社區可以保持它最新:

https://github.com/mizzao/meteor-user-status

相關問題