2017-11-14 4 views
0

しばらくの間ボットに書き込み/入力しなかった場合、メッセンジャーボットにセッションが終了したことを通知します。そうするために、私は最初に、アクティビティにリセットされる各ユーザーのためにsetTimeout()を使用することについて考えました。しかし、それは100人のアクティブなユーザーが存在する場合、100 Timeoutsが同時に存在することを意味します。NodeJS - 複数のタイムアウトと1つのボットのセッションのための1つの間隔

私は知りたかったのですが、代わりにIntervalの場合は、各ユーザーのセッション終了タイムスタンプを30〜60秒ごとにチェックする方が良いでしょうか?アクティブなユーザはメモリに保存されます。

答えて

0

setTimeoutの方がより正確です。各セッションは、個別に終了し、終了する予定の時間に近づきます。また、活動をより均一に広げます。 JSはシングルスレッドなので、タイムアウトは並行して発生することはありませんが、同時に数百ものタイムアウトが発生します。

setIntervalは、30〜60秒ごとに活動のスパイクを作成し、時にはセッションを生き残らせる時間が長くなることがあります。

同時に実行される複数のタイムアウトのコストについては、this answerを参照してください。

+0

テスト結果をありがとう、タイムアウトは私が思っていたほど重くはないようです。セッション時間の正確さの面では、セッションが最低30分で終了するため、セッションが1分遅れると大したことではありません。 –

関連する問題