gpt4 book ai didi

node.js - 这是维护用户状态(在线/离线)的标准方法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:45 24 4
gpt4 key购买 nike

我有一个用 Vuejs、Laravel 和 Nodejs 编写的实时社交网络应用程序。我有一些查询来获取在线用户,例如“select * from users where is_online=1”请不要建议我不要保留这面旗帜,我真的需要这面旗帜。要更新数据库中的此标志,我执行以下操作

  1. 当用户登录 socket.io 时,会与 Node 应用程序
  2. node/socket.io 应用程序中,我更新了 is_online 标志套接字“连接”事件为 1
  3. 当用户注销或浏览器关闭或网络连接时断开连接,“disconnect”在这里被触发,我再次更新“is_online”为 0

它工作得很好。但是,当用户刷新浏览器时,连接和断开连接事件会在服务器上触发两次更新数据库表。

我的问题是

  1. 这是实时确定用户状态的标准方法吗?
  2. 做此类事情的行业标准是什么?

我知道最后一个事件时间戳的事情,但这不是我的要求。我也知道在缓存中保存 ids 的技术,但是,这又不是我的要求。我想要的是“能够查询数据库中的在线和离线用户”

任何类型的知识都受到高度赞赏。

最佳答案

Couple things you can do to make it more flexible and scalable -

  • 不要使用数据库或 RAM 中的在线用户状态
  • 您可以使用像 redis 这样的存储来做到这一点
  • 请记住 10 万用户在线时会发生什么

There is no fixed standard way to do so but its almost the same way but more matured.

在频繁的套接字事件中涉及数据库查询对性能不友好,但是如果您确实想将任何详细信息保存到数据库,您可以这样做。

我曾开发过一个具有相同概念的应用程序(有时会达到 40-50K 在线用户),并且效果非常好。

关于node.js - 这是维护用户状态(在线/离线)的标准方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51874137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com