# Metti l'applicazione in manutenzione con PAUSESERVER()

> Metti in pausa il server per nome in modo che ogni richiesta riceva una pagina 503, riprendilo e sappi che senza secondo argomento la chiamata alterna lo stato.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: it
Content-SHA256: 8c30ed8e19168e1ea900df1ecf3af49c06761c6562e0ca2b7f40f316cf379177
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

`PAUSESERVER(name, true)` mette in pausa il server e `PAUSESERVER(name, false)` lo riprende. Finché **almeno un nome** è in pausa, ogni richiesta riceve lo stato **503** e la pagina di manutenzione integrata (una richiesta fatta con `xhr` riceve una risposta di errore 503 invece della pagina). Il nome identifica solo chi ha messo in pausa, così due parti dell'applicazione possono mettere in pausa e riprendere in modo indipendente: il server risponde di nuovo quando tutti i nomi sono stati ripresi.

Senza il secondo argomento la chiamata **alterna**: `PAUSESERVER(name)` mette in pausa quando il nome non lo era e riprende quando lo era, e restituisce il nuovo stato (`true` quando è in pausa).

Poiché un server in pausa risponde 503 a tutto, anche alla route che lo riprenderebbe, riprendilo dal tuo codice: un timer, un segnale, un'attività che termina. L'esempio si mette in pausa per poco tempo e riprende da solo.

```js controllers/maintenance.js
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 });
}
```
