Привет! У нас есть проект на nuxt
Периодически мы обновляем его путем пуша изменений на гитлаб и выполения примерно такой команды по средствойм CI
git checkout master && git pull origin master && yarn run build && pm2 restart nuxt-project
Во время процесса пересборки проект ведет себя неадекватно, ну что собственно логично
Подскажите, пожалуйста, как бы организовать некий автоматический "режим обслуживания"?
Что бы при обновлении все, находящиеся в адмике клиенты, получили бы оверлей, блокирующий интерфейс
И что бы после перезапуска этот оверлей автоматически убирался?
На любой ajax-запрос можно отдавать ответ о том что сайт в режиме обслуживания, к примеру используя middleware в laravel
if($isMaintenanceMode)
return response('Service Temporarily Unavailable', 503);
В axios я могу перехватить 503 ошибку:
export default function ({ $axios, redirect }) {
$axios.onError((request, error) => {
const code = parseInt(error.response && error.response.status)
if (code === 503) {
console.log('503')
}
})
}
Но такой перехват хотелось бы сделать синхронным - приостанавливать приложение при получении 503 кода
К примеру вот такой сценарий, в котором мы из админки сохраняем пост, а потом получаем список всех постов:
await axios.post('/content', {title: 'test', content: 'content'}) //Сохраняем пост
/*Если тут получаем 503 код:
1 Приостанавливаем все остальное
2 Отображаем оверлей с сообщением что необходимо подождать
3 Начинаем повторять предыдущий запрос, пока не получим код, отличный от 503
4 При получении кода 200 убираем оверлей, продолжаем выполнение приложения */
await axios.get('/content') //Получаем список постов
Возможно у кого нибудь есть мысли на счет этого?