유성 서버에서 무기한으로 실행되는 20 초 타이머가 있습니다. 사용자의 클라이언트가 연결되면 서버의 Timer 메소드에서 응답을받을 수있는 방법이 있습니까? 기본적으로 내가 달성하려고하는 것은 클라이언트에서 실행중인 동일한 타이머를보기 위해 연결하는 모든 사용자를위한 기능입니다.클라이언트가 페이지를로드 할 때 서버 메소드로부터 응답 받기 - 유성
그래서 짧게 ... 나는 클라이언트가 서버에서 계속 실행중인 메소드의 출력을 얻고 클라이언트에 응답을 출력하길 원합니다. 이것이 가능한가?
여기는 서버에서 실행중인 타이머 코드입니다.
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();
}
});
51ms마다 문서를 업데이트하는 것에 대해 잘 모르는 중 ... – ghybs