【问题标题】:Is it possible to check if anyone has a certain browser link open and if not execute a function?是否可以检查是否有人打开了某个浏览器链接,如果没有执行某个功能?
【发布时间】:2020-11-01 06:40:11
【问题描述】:

我正在制作一个涉及创建多个房间(用户创建它们)的网络应用程序。然后将这些房间存储在服务器上的阵列中。使用反应路由器,这些房间中的每一个都有自己独特的 url /roomCodeGoesHere。我想定期检查房间是否有人在里面(我猜在这种情况下浏览器是否打开?)如果里面没有人,则将房间从数组中删除。

有什么办法可以做到这一点吗? (我能想到的唯一方法似乎很老套,可能不是好的做法)

【问题讨论】:

  • 每隔几秒向您的服务器发送一个请求,如果您在 X 时间内没有收到任何请求,请删除房间
  • 除了无限循环之外,我可以使用一种特定的方法来检查请求吗?我尝试搜索,但找不到任何具体结果。

标签: node.js reactjs socket.io


【解决方案1】:

您可以监控服务器阵列中的用户数(通过 put 请求或 websocket on mount/unmount),如果房间空了有条件地在控制器中删除它。默认情况下,房间应以 1 人入住开始,因为它需要创建者。如果您不想立即删除房间,请执行相同的操作,但创建一个 setTimeout 有条件地自行清除,除非有新人进入。

我制作的这个聊天应用程序使用上述方法删除了 0 个用户的房间: http://astral-chat-app.herokuapp.com/

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多