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

前端之家收集整理的这篇文章主要介绍了Javascript:检查服务器是否在线?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
检查我的服务器是否通过 JavaScript在线的最快方式是什么?

我尝试了以下AJAX:

  1. function isonline() {
  2. var uri = 'MYURL'
  3. var xhr = new XMLHttpRequest();
  4. xhr.open("GET",uri,false);
  5. xhr.send(null);
  6. if(xhr.status == 200) {
  7. //is online
  8. return xhr.responseText;
  9. }
  10. else {
  11. //is offline
  12. return null;
  13. }
  14. }

问题是,如果服务器脱机,它不会返回.如何设置一个超时时间,如果在一段时间后没有返回,我可以假设它是脱机的?

解决方法

XMLHttpRequest不工作​​跨域.相反,我会加载一个小的< img>你期望快速回来看看onload事件:
  1. function checkServerStatus()
  2. {
  3. setServerStatus("unknown");
  4. var img = document.body.appendChild(document.createElement("img"));
  5. img.onload = function()
  6. {
  7. setServerStatus("online");
  8. };
  9. img.onerror = function()
  10. {
  11. setServerStatus("offline");
  12. };
  13. img.src = "http://myserver.com/ping.gif";
  14. }

编辑:清理我的答案. XMLHttpRequest解决方案可以在同一个域上进行,但是如果您只想测试一下服务器是否处于联机状态,则img加载解决方案是最简单的.没有必要混乱超时.如果你想让代码看起来像是同步的,这里有一些语法糖:

  1. function ifServerOnline(ifOnline,ifOffline)
  2. {
  3. var img = document.body.appendChild(document.createElement("img"));
  4. img.onload = function()
  5. {
  6. ifOnline && ifOnline.constructor == Function && ifOnline();
  7. };
  8. img.onerror = function()
  9. {
  10. ifOffline && ifOffline.constructor == Function && ifOffline();
  11. };
  12. img.src = "http://myserver.com/ping.gif";
  13. }
  14.  
  15. ifServerOnline(function()
  16. {
  17. // server online code here
  18. },function ()
  19. {
  20. // server offline code here
  21. });

猜你在找的JavaScript相关文章