nodejs で時限アプリケーションを作成する必要があります。ユーザーは、毎日、毎週、毎月を設定できます。私の最初の考えは、次のようなものを作成することでした:
socket.on("connect")
{
client.on("authenticate")
{
var frequency = GetTimersForUser(client);
var timersInMilliseconds = ConvertFrequencyToMS(frequency);
var nextInMS = GetLower(timersInMilliseconds);
setTimeout("timedCount()",nextInMS );
}
}
timedCount()
{
cancelTimer;
client.emit("poke");
var frequency = GetTimersForUsers(client);
...
setTimeout("timedCount()",nextInMS );
}
しかし、タイマーは接続後にのみ作成されるため、失敗したタイマー (クライアントが切断された場合) について警告することはありません。それで、毎秒1つのタイマーを作成する方が速いですか:
userslist = getIndividualUsersNextTimerAsDate();
setTimout("timedCount()",1000);
timedCount()
{
foreach(user in userslist)
{
if(user.time <= now())
{
if(user.socket)
{
user.socket.emit("poke");
}
user.time = resetTimeForNextTimer(user);
}
}
}
socket.on("connect")
{
...
userslist[x].socket = client;
}
または「時間」ごとに複数のタイマー:
var userslist = GetUsersTimers();
foreach(user in userslist)
{
user.Counter = setTimeout("runTime()",client.timer );
}
runTime(client)
{
client.emit("poke");
client.Counter.cancel();
client.timer = resetToNextTimer();
client.Counter = setTimeout("runTime()",client.timer );
}
または、私が見逃しているより良い方法はありますか?