У меня есть серверное приложение (назовем ServerApp1 ), которое будет работать на экземпляре Azure виртуальной машины. У меня есть отдельный сервер (который мы назовем ServerApp2 ) на другом компьютере, который будет взаимодействовать с ServerApp1 и отдельным клиентом. Виртуальная машина Azure будет раскручиваться и / или отключаться в зависимости от необходимости, поэтому вполне возможно, что виртуальная машина (и, следовательно, ServerApp1) даже не доживает до ответа на запрос от ServerApp2. Мой клиент опрашивает ServerApp2, чтобы узнать статус ServerApp1, но если виртуальная машина в настоящее время не работает, этот запрос зависает примерно на 20 секунд, прежде чем выдаст ошибку с кодом ETIMEDOUT . Я бы хотел, чтобы ServerApp2 сделал запрос к ServerApp1, чтобы проверить, жив ли он, но после примерно 1 или 2 секунд отсутствия ответа просто остановитесь и скажите клиенту, что он в настоящее время не работает. Я думал, что могу обойтись без добавления параметра {timeout: 2000} к моему вызову ax ios, но это, похоже, не меняет поведение каким-либо заметным образом. Вот функция, которая вызывается, когда клиент спрашивает ServerApp2 о статусе ServerApp1:
router.get('/getCurrentConsoleStatus', function(req, res) {
async function getStatus() {
try {
const result = await consoleDataService.getConsoleStatus();
if (result.message === 'Begin listen for job.') {
console.log('The app is ready!');
} else {
console.log('The console app is not ready');
}
} catch (error) {
console.log(`Error communicating with console app: ${error}`);
}
}
getStatus();
});
У меня есть функция, которая создает объект root Ax ios:
var axios = require('axios');
module.exports = axios.create({
baseURL: 'baseURL',
timeout: 1000,
headers: {
'Content-type': 'application/json'
}
});
А затем функция, которая вызывается в consoleDataService.getConsoleStatus () , выглядит так:
exports.getConsoleStatus = async function() {
const res = await axios({
method: 'get',
url: '/status'
});
return res.data;
};