gpt4 book ai didi

backbone.js - Trello 如何准确显示用户在线/离线/空闲状态?

转载 作者:行者123 更新时间:2023-12-05 00:26:39 26 4
gpt4 key购买 nike

正如我个人所见,Trello 非常准确地显示了在线/离线/空闲状态的信息。有多种跟踪用户在线状态的解决方案,而要准确做到这一点需要大量的开销。还存在不知道用户是否关闭浏览器、断开连接等的传统问题,导致离线/空闲状态显示不准确。对于一个没有聊天功能的平台(我相信,它会承担跟踪用户状态的开销,因此使任务最终变得容易),尽管没有太多开销,但 Trello 是如何实现这一点的?

此外,Trello 能够检测断开连接并恢复连接(虽然不是那么顺利)。

Trello 的 Pushing 和 Polling 层描述 here

最佳答案

每个浏览器选项卡都被视为一个 session ,与一个用户相关联。每个 session 的事件级别被单独跟踪,向用户显示其所有 session 的最高事件级别(其中事件级别最高,然后空闲,然后断开连接)。

每个选项卡定期将其当前状态发送到服务器 - 如果它有工作的 WebSocket,则每分钟发送一次,否则每 5 分钟发送一次。每次选项卡获得焦点或有 keydown 或 mousedown 事件时,当前状态都会重置为事件状态。如果自最近的这些事件以来已经超过 5 分钟,它就会处于空闲状态。该选项卡在 onunload 事件中发送断开连接状态,但我们不依赖于此。

每次 session 将其状态发送到服务器时,服务器都会查看该用户的所有 session ,以确定这是否表明用户状态发生了变化。如果是这样,它会将新状态广播给观看用户所在的每个板的每个人(这通过与 Trello 的其余即时更新经历相同的框架,在这里解释太复杂)。

服务器还检查每个 session 以查看它是否自我们收到该 session 以来的时间过长(如果它是 WebSocket session ,则为 2 分钟,否则为 10 分钟)并删除 session (如果它已经存在)(删除 session 表示它已断开连接) )。

有一些优化隐藏在那里,但这是主要故事。

关于backbone.js - Trello 如何准确显示用户在线/离线/空闲状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848413/

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