Вы можете создать определенный маршрут, который будет вызываться на конкретном setInterval()
вашим интерфейсным javascript. Этот маршрут может вернуть JSON с массивом ошибок, если таковые имеются. Что-то вроде:
app.get('/health-check', (req,res) => {
// check database connectivity and any other staff you want here
// add any errors in an array
if (errors.length > 0) {
return res.status(500).json({health: false, errors: errors});
}
return res.status(200).send({health: true});
});
Будьте осторожны, так как могут существовать ошибки, которые вы не хотите показывать своему пользователю. Это будет зависеть от типа приложения и т. Д.
Затем выполните AJAX-вызов из вашего JS-кода в функции setInterval()
. Реализация этого будет зависеть от используемой вами библиотеки / фреймворка, но использование jquery, например, будет выглядеть так:
const healthTimer = setInterval(() => {
$.ajax({
url: "[your server url]/health-check",
type: "GET",
success: function(xml, textStatus, xhr) {
// get the server status here if everything is ok
$('div.server-health span.success').text(`Server Status: ${xhr.status}`);
$('div.server-health span.error').text('');
console.log('RESPONSE CODE:', xhr.status);
},
error: function (request, status, error) {
// handle the error rendering here
$('div.server-health span.error').text(`Server Status: ${status}`);
$('div.server-health span.success').text('');
alert(request.responseText);
}
});
}, 15000); // send the request every 15 seconds
Внутри html-файла у вас может быть <div>
для отображения работоспособности сервера:
<div class="server-health">
<span class="error"></span>
<span class="success"></span>
</div>