可靠的聊天室计时器

时间:2013-11-05 07:10:34

标签: javascript node.js redis socket.io

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

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

节点服务器=>处理室的成员相关数据来自redis,并在一段时间后在每个房间广播。这个间隔(即何时广播)由一个数组决定,称之为timerArrayForRoom1。此数组保存广播数据的时间(以秒为单位)。每个房间的阵列都不同。

现在,有两种方法 -

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

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

  3. 第一种方法是独立于HOST,但它涉及在NodeJS中使用setInterval()。

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

    哪个更可靠? (因为我读取setInterval()并不保证其调用函数的时间)

    还是其他方法?

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

1 个答案:

答案 0 :(得分:0)

来自您的节点服务器的

setInterval是可行的方法。你已经给出了一个很好的理由,它与客户无关。同时它可能无法保证其执行时间。它是最接近执行时间的。

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