如何检查另一台服务器是否使用javascript

How can I check whether another server is up in javascript?

本文关键字:是否 服务器 javascript 一台 何检查 检查      更新时间:2023-09-26

在我的网络应用程序中,我需要检查另一台服务器(位于不同的ip地址)是否已启动。我知道由于跨域限制,我不能使用直接的ajax请求。我无法使用JSONP,因为我无法控制其他服务器。我还需要反复检查服务器是否启动,因为它可能在某些时候不可用。所有这些都不容易。

然而,由于我只关心对远程服务器的请求是否成功(我不关心服务器可能返回的任何数据),我希望这是可能的。

我不能在服务器端这样做,因为服务器端可能对另一台服务器有可见性,也可能没有可见性,我真正关心的是客户端(web浏览器)是否有可见性。

我可以将一个新的iframe附加到页面,src等于远程服务器地址,但如何检查(IF)iframe内容何时成功加载?此外,我如何定期提出请求?通过重复创建新的iframe?这看起来很不干净。

有什么方法可以干净可靠地做到这一点吗?

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

使用jQuery的Raynos类似解决方案:

$('<img src="http://domain.tld/path/to/a.png">').load(function(){
    console.log("domain.tld is up.");
});

我知道由于跨域限制,我不能使用ajax。

不是这样。参见JSONP

相关文章: