【发布时间】:2019-01-23 05:48:27
【问题描述】:
我有一个用 Vuejs、Laravel 和 Nodejs 编写的实时社交网络 Web 应用程序。
我有查询要获取在线用户,例如“select * from users where is_online=1”
请不要建议我不要保留这面旗帜,我真的需要这面旗帜。
要在数据库中更新此标志,我执行以下操作
- 当用户登录
socket.io连接时,使用 节点应用 - 在
node/socket.io应用程序中,我更新了is_online标志 套接字“connection”事件为 1 - 当用户注销或浏览器关闭或网络连接时
断开连接,“
disconnect”在这里触发,我再次更新 "is_online" 为 0
完美运行。但是,当用户刷新浏览器时,服务器上的连接和断开连接事件会触发两次更新数据库表。
我的问题是
- 这是实时确定用户状态的标准方法吗?
- 做这些事情的行业标准是什么?
我知道最后一个活动时间戳的事情,但这不是我的要求。 我也知道将 id 保存在缓存中的技术,但是,这又不是我的要求。我想要的是'能够查询数据库的在线和离线用户'
任何知识都受到高度赞赏。
【问题讨论】:
标签: node.js laravel sockets socket.io real-time