Мое мобильное приложение должно отправить запрос Ajax и знать разницу между тем, если сервер не работает или сервер работает, но выдает ошибку.
Я понимаю, что в случае ошибки сервера сервер вернет ответ с кодом 50X.
Но что будет, если сервер выйдет из строя. Какую ошибку получит клиент?
Я искал, но это меня сбивает с толку - люди советуют настроить ваш сервер для ответа с кодом 503, если он находится на обслуживании. Но я не могу понять факт - что сервер не работает, как он может отправить ответ 503 ??
Обычно балансировщик нагрузки переднего плана отправляет 503 Сервис недоступен ошибка, если фактический веб-сервер не работает. Если у вас нет балансировщика нагрузки и сервер, стоящий за ним, не работает, или если балансировщик нагрузки не работает, клиент получит сообщение Время соединения вышло. Если сервер работает, но Apache не запущен, клиент получит В соединении отказано.
В случае отказа сервера сам вызов AJAX вернет ошибку.
response = url.open("http://...");
if (response == NULL) { /* handle Connection timeout / Conn refused */ }
В случае 503 ваш вызов AJAX фактически выполняет HTTP-запрос, за исключением того, что код ошибки говорит о наличии проблемы. Что-то вроде:
response = url.open("http://...");
if (response.code == 503) { /* handle service unavailable */ }
Надеюсь, это поможет :)