我正在研究监控用户在线状态的节点应用程序。它使用socket.io来更新我们“观察”的用户的在线状态(就像我们在页面上知道的用户一样)。我现在要介绍的是idle
状态,这基本上意味着在X时间不活动后(如无请求中)状态将从online
更改为idle
。
我确实监视所有套接字因此我知道何时建立连接,所以我想到了使用它。
我的想法是在每个连接上使用setTimeout进行此特定用途(如果存在,则清除前一个连接),在setTimeout中,我只需将用户状态更改为idle
并将状态更改发送给观察者。
我关心的是在每个连接上设置和清除超时的性能和可扩展性。所以问题是,上述两种方法在采用这种方法时是否存在任何问题?有没有更好的做法,也许是一个更好地处理这些事情的图书馆?