Как я могу проверить, работает ли другой сервер в JavaScript? - PullRequest
0 голосов
/ 23 июня 2011

В моем веб-приложении мне нужно проверить, работает ли другой сервер (с другим IP-адресом). Я знаю, что не могу использовать прямые ajax-запросы для этого из-за междоменных ограничений. Я не могу использовать JSONP, потому что у меня нет никакого контроля над другим сервером. Мне также нужно многократно проверять работоспособность сервера, так как иногда он может быть недоступен. Все это не облегчает.

Однако, поскольку я забочусь только об успешном выполнении запроса к удаленному серверу (и мне не нужны никакие данные, которые сервер может вернуть), я надеялся, что это будет возможно.

Я не могу сделать это на стороне сервера, потому что сторона сервера может иметь или не иметь видимость для другого сервера, и меня действительно волнует, что клиент (веб-браузер) имеет видимость.

Я могу добавить новый iframe на страницу с src, равным адресу удаленного сервера, но тогда как я могу проверить, когда (IF) содержимое iframe было успешно загружено? Также, как я делаю периодические запросы? Создавая новые фреймы повторно? Это кажется нечистым.

Есть ли способ сделать это чисто и надежно?

Ответы [ 3 ]

2 голосов
/ 23 июня 2011
function testServer(server, cb) {
    var img = new Image();
    img.onload = function() {
      cb.call(this, img);
    };
    img.src = server;
}

var url = "http://placekitten.com/200/300/"
testServer(url, function _self(img) {
    if (img.naturalHeight === 200) {
        alert("win");    
    } else {
        setInterval(function() {
            testServer(url, _self);
        }, 10000);
    }
});

Вы хотите загрузить изображение с удаленного сервера, а затем проверить, соответствует ли высота изображения тому, что вы ожидаете.

Если вы не можете разместить изображение на удаленном сервере, вам нужно будет использовать CORS

0 голосов
/ 23 июня 2011

Аналогичное решение Raynos 'с использованием jQuery:

$('<img src="http://domain.tld/path/to/a.png">').load(function(){
    console.log("domain.tld is up.");
});
0 голосов
/ 23 июня 2011

Я знаю, что не могу использовать ajax для этого из-за междоменных ограничений.

Не правда. См JSONP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...