聊天室的可靠计时器
Reliable timer for a chat room
请帮忙为聊天室计时器选择一个解决方案(nodeJS + socket.io + redis)。
创建多个房间,每个房间只有一个主机,即该房间的管理员,每个房间都有 500 名成员。在任何时候都可以有"n"个房间。房间将在创建 1 小时后被摧毁。
节点服务器 => 处理来自 redis 的成员相关数据,并在一段时间后在每个房间中广播。 这个间隔(即何时广播)由数组决定,称为timerArrayForRoom1
。此数组保存广播数据的时间(以秒为单位)。每个房间的此数组都不同。
现在,有两种方法——
在nodeJS中使用setInterval(),以便它在一段时间后调用其广播方法。每个房间都有其单独的间隔对象。
向房间的主机提供
timerArrayForRoom1
,并让主机根据计时器数组在几秒钟后触发事件。 即在客户端使用 setinterval()。节点服务器将对该事件执行操作。
第一种方法与 HOST 无关,但它涉及在 NodeJS 中使用 setInterval()。
哪一个会更好地实现,以便服务器能够支持 1000 个房间,其中有 500 个成员同时运行和广播?
哪个更可靠?(正如我读到的setInterval()不保证调用函数的时间)
还是其他方法?
主机/管理员将是不同的设备,每个房间只有一个,因此第二种方法将在一定程度上平衡服务器负载。
服务器setInterval
是要走的路。您已经给出了一个很好的理由,即它独立于客户端。此外,虽然它可能无法保证其执行时间。它最接近准时执行。
这应该相当准确,除非您的服务器由于 CPU 密集型执行而挂起。此外,允许 HOST 或任何其他客户端启动事件也容易受到相同的缺点的影响。
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 设置倒计时计时器,IE出现问题
- MobileFirst:在客户端运行计时器作业-最佳选项
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 倒计时计时器应该持续两个php页面
- 在Jquery倒计时计时器上设置每个数字的动画
- 我如何才能确保计时器设置为每天4点半,所以我不会;不用在Javascript中提及某个日期
- 如何禁用窗口.当计时器超时时,打开卸载警报
- 在Nodejs中为许多用户处理计时器
- 如果弹出窗口关闭,Javascript停止/重置计时器
- 如何在隐藏时暂停jquery计时器
- Javascript倒计时计时器倒计时未正确更新秒/分钟
- 计时器循环从不运行
- Progressbar计时器,仅在页面刷新时重新加载
- 创建一个倒计时计时器脚本,该脚本计算声音文件的持续时间,而不是特定的日期
- 递归倒计时计时器
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 试图创建一个24小时计时器来重置自己
- 在JS中设置计时器1秒
- 聊天室的可靠计时器