使用NowJS/Node.js实时跟踪在线/离线状态
Keeping track of online/offline status in real-time with NowJS/Node.js?
我有一个网站,用户登录并连接到所有页面上的NowJS。我希望能够近乎实时地跟踪他们的状态(在线/离线),但我不确定这样做的最好方法。我最初的想法是只使用连接和断开连接事件,但这不会起作用,因为每次用户进入新页面时都会触发这些事件(因为套接字连接在新页面加载时关闭)。
我已经得到了它有点工作,我在数据库条目中记录了一个时间戳的用户在断开连接事件,然后当连接事件发生时,我检查他们是否在过去30秒内访问了该站点。如果他们没有,我可以假设他们正在开始一个新的会话。在断开连接事件上,我使用setTimeout来查看它们从现在起30秒是否仍然在线,然后将它们的状态设置为离线,如果不是。
虽然这大部分工作,它似乎有些黑客,并有几个边缘情况的问题,可能是有问题的(更不用说你将有一个新的超时服务器端在每个页面视图)。有没有我刚才忽略的更好的方法?
正确的方法不仅仅取决于'是否有一个开放的连接'。您是否试图向其他用户显示是否有人在周围/可用于聊天/其他?然后,您还可以考虑在页面本身设置一个非活动超时(以捕获人们离开计算机而不关闭页面的时间)。如果您在做其他事情,比如计量使用,您可能需要一种不同的机制。
我认为这里的解决方案是扩展Socket的超时选项。IO (NowJS内部使用)或使用setTimeout的hack解决方案。
老实说,考虑到用户可以快速切换到另一个页面,这似乎是最好的解决方案。
我最终做的是创建一个全局对象,该对象持有用户的持久ID(因此在这种情况下,他们在MongoDB中的ObjectId)作为键,并将对setTimeout的引用作为值。然后,我在'connect'事件上执行clearartimeout,并在认为对象脱机时从对象中删除键。
- 如何离线存储数据库,在线时共享到服务器
- 如何使用一个代码库在线和离线访问 HTML5/JS 应用程序中的数据库
- 在线/离线数据更新移动最佳实践
- php 代码离线工作,但不在线工作
- 为什么 Javascript 动画离线流畅,但在线放置时却断断续续?(AWS)
- 显示谁在线/离线使用Javascript,PHP,PDO,CSS,html
- PhoneGap在线和离线模式
- 与Firebase交互(离线和在线)
- phonegap炒作在线和离线应用程序
- phonegap离线/在线活动不起作用
- node . js,套接字.Io:检查用户是否在线或离线
- 如何从离线访问在线JSON文件?(javascript)
- 使用NowJS/Node.js实时跟踪在线/离线状态
- 使用XML数据和Javascript制作一个直播在线/离线徽章
- 如何从离线可用的web应用程序访问在线资源
- 如何回调在线/离线状态
- 设备未检测到在线/离线状态
- 检查web服务器是否在线/离线
- 如何使用socketio实时显示在线/离线用户使用帆船
- 使用AngularJS和Symfony 2进行在线/离线数据同步的最佳实践