Ich habe einen 20-Sekunden-Timer, der unbegrenzt auf meinem Meteor-Server läuft. Wenn der Client eines Benutzers eine Verbindung herstellt, gibt es eine Möglichkeit, die Antwort von der Timer-Methode auf dem Server zu erhalten? Grundsätzlich versuche ich zu erreichen, dass alle Benutzer, die sich verbinden, den gleichen Timer auf ihrem Client sehen können.Erhalten Antwort von Server-Methode, wenn Client lädt Seite - Meteor
Also kurz ... Ich möchte ein Client die Ausgabe einer Methode, die kontinuierlich auf dem Server ausgeführt wird und dann die Antwort an den Client ausgeben. Ist das möglich?
Hier ist der Timer-Code, den ich auf dem Server laufen lasse.
Meteor.methods({
runTimer: function() {
var running = false;
var seconds = 20000; // (1 sec = 1000)
var then; // Timer start time
// ------------------------------------
// Evaluate and route
// ------------------------------------
function router() {
if (!running) {
run();
}
};
// ------------------------------------
// Run the timer
// ------------------------------------
function run() {
running = true;
then = Date.now() + seconds;
var interval = setInterval(function(){
var time = parseTime(then-Date.now());
if (time[0] > 0) {
console.log(time[0] + '.' + time[1]);
} else {
console.log('0.00');
running = false;
clearInterval(interval);
router();
}
}, 51);
};
// ------------------------------------
// Parse time in MS for output
// ------------------------------------
function parseTime(elapsed) {
// Array of time multiples [sec, decimal]
var d = [1000,10];
var time = [];
var i = 0;
while (i < d.length) {
var t = Math.floor(elapsed/d[i]);
// Remove parsed time for next iteration
elapsed -= t*d[i];
t = (i > 0 && t < 10) ? '0' + t : t;
time.push(t);
i++;
}
return time;
};
router();
}
});
Nicht sicher über die Aktualisierung Ihres Dokuments alle 51ms ist sehr nett ... – ghybs