是否有可能在服务器端捕获非活动用户会话?我构建了一个具有两个间隔的解决方案,但这使我的页面每 20 秒更新一次,因为客户端每 20 秒推送他的在线状态。我知道 Meteor.logout([callback]) 功能,但我也必须检测客户端关闭浏览器窗口而不注销的天气。我找到了流星客户端用户会话演示,但这没有我需要的功能。有什么解决办法吗?
问问题
1267 次
2 回答
2
我想出了一种使用 websocket 捕获断开连接的方法。这也不使用轮询来保持状态在线。基本上,您制作任意发布并在客户端订阅它:
Meteor.publish "statusWatcher", ->
id = @_session.userId
@_session.socket.on "close", Meteor.bindEnvironment( ->
Meteor.users.update id,
$set: {'profile.online': false}
与往常一样,这会受到 Meteor API 更改的影响,但您可以将其安装为智能包,并且社区可以使其保持最新:
于 2013-06-21T22:53:22.380 回答
2
查看meteor-profile-online
软件包(您需要为此安装meteorite):
Profile.online 是一个流星智能包,提供一种方便的方式来公开帐户在线状态。
它将profile.online
属性添加到用户对象,该对象由您可以配置的 keepalive 切换。
它使用您在问题(轮询)中提到的相同方法,但这确实是唯一的方法。至少这个包将它很好地集成到了 Meteor 中Meteor.keepalive
。
于 2013-02-19T16:12:14.687 回答