Javascript:检查服务器是否在线?

标签 javascript

通过 JavaScript 检查我的服务器是否在线的最快方法是什么?

我尝试了以下 AJAX:

function isonline() {
    var uri = 'MYURL'
    var xhr = new XMLHttpRequest();
    xhr.open("GET",uri,false);
    xhr.send(null);
    if(xhr.status == 200) {
        //is online
        return xhr.responseText;
    }
    else {
        //is offline
        return null;
    }   
}

问题是,如果服务器离线,它永远不会返回。我如何设置超时,以便如果它在一定时间后没有返回,我可以假设它处于离线状态?

最佳答案

XMLHttpRequest跨域不起作用。相反,我会加载一个很小的 ​​<img>您希望很快回来观看 onload事件:

function checkServerStatus()
{
    setServerStatus("unknown");
    var img = document.body.appendChild(document.createElement("img"));
    img.onload = function()
    {
        setServerStatus("online");
    };
    img.onerror = function()
    {
        setServerStatus("offline");
    };
    img.src = "http://myserver.com/ping.gif";
}

编辑:清理我的答案。一个XMLHttpRequest解决方案在同一个域上是可能的,但如果您只想测试服务器是否在线,img 加载解决方案是最简单的。没有必要搞乱超时。如果你想让代码看起来像是同步的,这里有一些语法糖给你:

function ifServerOnline(ifOnline, ifOffline)
{
    var img = document.body.appendChild(document.createElement("img"));
    img.onload = function()
    {
        ifOnline && ifOnline.constructor == Function && ifOnline();
    };
    img.onerror = function()
    {
        ifOffline && ifOffline.constructor == Function && ifOffline();
    };
    img.src = "http://myserver.com/ping.gif";        
}

ifServerOnline(function()
{
    //  server online code here
},
function ()
{
    //  server offline code here
});

关于Javascript:检查服务器是否在线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224197/

相关文章:

javascript - 使用javascript从字符串中获取变量内容

javascript - 如何编辑 React 组件并更改屏幕上显示的文本

javascript - Ajax 和 jQuery 处理程序

javascript - 以 JSON 格式返回 HTML 并调用函数

javascript - 从 d3.js 中的线图中删除线

javascript - "forceSelection:true"不允许清除字段

javascript - 在 for 循环中查询 Youtube 的标题仅显示第一项

php - 动态更改iframe的src内容

javascript - 单击时不会播放视频

javascript - 如何在控制台日志之外获取IPC消息的值?