Ich habe einige Timeouts auf der Serverseite mit setTimeout und setInterval für jeden verbundenen Benutzer festgelegt, die 10-30 Sekunden dauern können. Wenn die Node.js-Instanz in der Mitte eines dieser Timeouts neu gestartet wird, werden sie offensichtlich alle beim Neustart gelöscht, was einige Probleme für diese Benutzer verursachen kann. Wie würde ich fortfahren, diese Timeouts zu bestehen, oder gibt es Module, die bereits dabei helfen?
Ich würde die Startzeiten und -dauern in Redis speichern und unvollständige Timer neu starten, wenn Ihre Anwendung neu geladen wird. Einige Redis-Module:
setTimeOut
benötigt eine Verzögerung als Parameter. Wenn Sie also ein Zeitlimit setzen, erfassen Sie ' currentServerTime + delay
' und geben Sie ' serverTriggerTime
' in der Datenbank an. Erstellen Sie dann beim Neustart des Servers den gleichen Timer mit serverTriggerTime
.
Dann, delay = serverTriggerTime - currentServerTime
, benutze diese Verzögerung, um einen neuen Timer zu setzen.
Beim Einstellen des Timers
%Vor%Beim Neustart des Servers:
%Vor%Setzen Sie auch den neuen Timer nur dann, wenn newDelay & gt; = 0 ist, was bedeutet, dass die Triggerzeit nicht erreicht wurde und nach der neuen Delay-Zeit erfolgt.
Tags und Links javascript node.js settimeout setinterval