我有一个用户登录并连接到所有页面上的NowJS的站点。我希望能够近乎实时地跟踪他们的状态(在线/离线),但我不确定最好的方式来做到这一点。我最初的想法是只使用connect和disconnect事件,但这不起作用,因为每次用户进入新页面时都会触发这些事件(因为在新页面加载时关闭套接字连接)。使用NowJS/Node.js实时跟踪在线/离线状态?
我有点工作,我在断开连接事件中为该用户的数据库条目记录时间戳,然后当连接事件触发时,我检查他们是否在最近30秒内访问过该网站。如果他们没有,我可以假设他们正在开始一个新的会议。在断开事件中,我使用setTimeout来查看它们是否从现在起30秒仍处于联机状态,如果不是,则将其状态设置为脱机状态。
虽然这主要是工作,它似乎有点哈克,有可能是有问题的几个边缘情况的问题(更何况事实,你将不得不在每个页面视图中创建新的超时服务器端)。有没有更好的方法来做到这一点,我只是俯瞰?
新页面=新的套接字连接。跟踪每个用户的连接,并且如果他们打开另一个套接字,则忽略断开连接。听起来不错? –
我其实已经这样做了,但仍然存在这样的问题,即如果他们只打开一个页面并且只是点击链接,他们就没有连接打开。我目前将用户的所有连接存储在以其用户名作为名称的组中。 –