0

请帮助选择聊天室计时器的解决方案(nodeJS + socket.io + redis)。

创建了多个房间,每个房间都有一个 HOST,即该房间的管理员,每个房间将有 500 名成员。任何时候都可以有'n'个房间't'。一个房间将在创建 1 小时后被摧毁。

Node server => 处理来自redis的房间成员相关数据,并在一段时间后在每个房间广播。这个间隔(即何时广播)由一个数组决定,称之为timerArrayForRoom1. 该数组保存广播数据的时间(以秒为单位)。这个阵列对于每个房间都是不同的。

现在,两种方法 -

  1. 在 nodeJS 中使用 setInterval() 以便它会在一段时间后调用它的广播方法。每个房间都有其单独的间隔对象。

  2. timerArrayForRoom1房间的主机,让主机在几秒钟后根据计时器数组触发一个事件。即在客户端使用 setinterval()。节点服务器将对该事件采取行动。

第一种方法是独立于主机的,但它涉及在 NodeJS 中使用 setInterval()。

哪个更好实施,以便服务器能够支持 1000 个房间,其中有 500 个成员,同时运行和广播?

哪个更可靠?(当我读到 setInterval() 并不能保证它调用函数的时间)

还是有其他方法?

主机/管理员将是不同的设备,并且每个房间都有一个,因此第二种方法将在一定程度上平衡服务器负载。

4

1 回答 1

0

setInterval从你的节点服务器是要走的路。您已经给出了一个很好的理由,即它独立于客户。此外,虽然它可能无法保证其执行时间。它是最接近准时执行的。

除非您的服务器由于 CPU 密集型执行而挂起,否则这应该会相当准确。还允许 HOST 或任何其他客户端启动事件也容易受到相同的缺点。

于 2013-11-05T07:20:35.633 回答