2013-05-12 166 views
1

有沒有辦法檢查Node.js服務器是否從html/javascript在線?連接時顯示消息,但如果服務器關閉,則不會發生任何事情。有沒有辦法做到這一點?檢查node.js服務器是否在線?

感謝, 米卡


是的,謝謝你的答案,我用插座對象的「錯誤」事件檢測服務器停機或停電所以我假設的是,如果報告的錯誤,服務器下來或客戶端有互聯網連接問題。

+2

發送請求到服務器,看看會發生什麼? – SLaks 2013-05-12 15:07:18

+0

我想我需要使用超時事件,我會試試看看會發生什麼。 – blackuprise 2013-05-12 15:11:27

+0

我在錯誤事件上做了它,不知道是否有更好的解決方案。 – blackuprise 2013-05-12 17:31:31

回答

-1

如果您使用jQuery,您可以發送簡單的AJAX請求並使用error回調。當您的服務器返回4xx或5xx狀態碼時,將調用error回調。如果一切正常,success回調被稱爲

0

譚的回答是正確的,但狀態碼錯誤並不總是說服務器是「關閉」。一個404狀態代碼只是簡單地指出缺少一個文檔 - 這是來自服務器的實際響應。

1

在我的情況下,我使用的是socket.io。

當使用socket.io你當這個文件被加載,它宣稱IO

全局變量如果服務器在你第一次請求是關閉resquest的socketio.js文件到服務器,然後您從標籤文件,您將需要重寫這一標籤

var reloadIO = function(){ 

    // if server is not, serveri.io.js will be not available so we need to redeclare de dom node 
    $("script[src*='socket.io.js']","head").remove(); 

    var script=document.createElement('script'); 
    script.type='text/javascript'; 
    script.src=ioSrc+"?"+Math.floor(Math.random()*111);; 
    $("head").append(script); 
    // nullify 
    script = null; 

    return; 
}; 

如果你要檢查其加載:

var isIOLoaded = function(){ 
    return (typeof(io) != "undefined") ? true : false; 
} 

這樣你可以有一個的setInterval檢查io是否被聲明,如果不是,請調用reloadIO。

+0

是的,但如果node.js和webserver託管客戶端文件是兩個不同的? – blackuprise 2013-05-14 10:45:16