Ponha a aplicação em manutenção com PAUSESERVER()
PAUSESERVER(name, true) pausa o servidor e PAUSESERVER(name, false) retoma-o. Enquanto pelo menos um nome estiver em pausa, todos os pedidos são respondidos com o estado 503 e a página de manutenção incorporada (um pedido feito com xhr recebe uma resposta de erro 503 em vez da página). O nome apenas identifica quem pausou, de modo que duas partes da aplicação possam pausar e retomar de forma independente: o servidor volta a responder quando todos os nomes foram retomados.
Sem o segundo argumento a chamada alterna: PAUSESERVER(name) pausa quando o nome não estava em pausa e retoma quando estava, e devolve o novo estado (true quando está em pausa).
Como um servidor em pausa responde 503 a tudo, incluindo à rota que o retomaria, retome a partir do seu próprio código: um temporizador, um sinal, uma tarefa que termina. O exemplo pausa por pouco tempo e retoma sozinho.
exports.install = function() {
ROUTE('GET /maintenance/', maintenance);
ROUTE('GET /toggle/', toggle);
ROUTE('GET /ping/', ping);
};
function maintenance($) {
const state = PAUSESERVER('maintenance', true);
setTimeout(() => PAUSESERVER('maintenance', false), 600);
$.json({ paused: state });
}
function toggle($) {
const first = PAUSESERVER('toggled');
const second = PAUSESERVER('toggled');
$.json({ first: first, second: second });
}
function ping($) {
$.json({ ok: true });
}