NodeJS - 机器人会话中的多个超时与一个时间间隔

时间:2017-11-14 07:14:54

标签: javascript node.js session facebook-messenger-bot

我希望messenger机器人在一段时间内没有写入/给机器人输入时通知用户他们的会话结束了。为了做到这一点,我首先考虑为每个将重置活动的用户使用setTimeout()。但这意味着如果有100个活跃用户,则同时会有100个Timeouts

我想知道,如果有一个Interval而不是每隔30-60秒检查每个用户的会话结束时间戳更好的方法?活动用户存储在内存中。

1 个答案:

答案 0 :(得分:0)

在您的情况下,

Url.Action()更精确:每个会话将独立结束,并且更接近它应该结束的时间。它还将更均匀地传播活动。由于JS是单线程的,因此超时不会并行触发,即使它们同时存在数百个。

setTimeout每隔30-60秒会产生一次活动高峰,有时会使会话保持活动的时间超过预期。

根据同时运行多次超时的费用,请参阅this answer