Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript测试服务器是否可访问_Javascript_Jquery - Fatal编程技术网

使用javascript测试服务器是否可访问

使用javascript测试服务器是否可访问,javascript,jquery,Javascript,Jquery,我有一个javascript应用程序,可以从公司防火墙内的服务器异步加载数据。我们有时需要在防火墙之外显示此应用程序,但并不总是能够访问VPN。因此,我们将防火墙配置为允许在特定端口上公开请求此数据。问题:当我在公司网络中时,由于防火墙的特殊配置,我只能使用服务器的DNS名称加载数据。在公司网络之外,我必须使用服务器的公共IP地址 目前,我们发布了两个版本的javascript应用程序——一个在防火墙内工作,另一个在防火墙外工作。我们想发布一个应用程序——一个测试URL的应用程序,然后根据可访问

我有一个javascript应用程序,可以从公司防火墙内的服务器异步加载数据。我们有时需要在防火墙之外显示此应用程序,但并不总是能够访问VPN。因此,我们将防火墙配置为允许在特定端口上公开请求此数据。问题:当我在公司网络中时,由于防火墙的特殊配置,我只能使用服务器的DNS名称加载数据。在公司网络之外,我必须使用服务器的公共IP地址

目前,我们发布了两个版本的javascript应用程序——一个在防火墙内工作,另一个在防火墙外工作。我们想发布一个应用程序——一个测试URL的应用程序,然后根据可访问的URL,继续使用该地址加载数据

我一直在使用jQuery的
$.ajax()
调用来加载数据,我注意到有一个
timeout
参数。我想我可以用一个短的超时来确定哪个服务器无法访问。。但是,在与服务器建立初始连接之前,这个“倒计时”似乎不会开始


关于如何在javascript中确定两台服务器中哪一台是可访问的,有什么想法吗?

您可以在服务器上放置一些虚拟图像并尝试加载它们。应触发成功加载的映像的onload事件。

使用该事件:


使用
setTimeout
(与“连接超时”无关)计划一个函数,以检查请求是否正在进行。如果您知道只有一个请求可以工作,则可以同时发送两个请求,然后接受第一个响应的请求。如果您有许多请求,您可能希望缓存响应的请求,这样您就不会在第一个请求之后继续启动无用的请求。
$.ajax({
    url: dnsUrl,
    success: ... // Normal operation
    error: function () {
        $.ajax({
            url: ipUrl,
            success: ... // Normal operation
        });
    }
});