Javascript:根据服务器状态禁用按钮

时间:2014-09-29 17:31:50

标签: java javascript websocket playframework-2.0

我对Javascript很新,我有一个按钮,需要经常检查服务器是否处于活动状态。

我正在使用基于Java的Play框架。我已经有一个类ServerStatus,它返回服务是否健康,但我不知道如何将它链接到包含按钮的页面。

基本上,我想要的是,如果服务器出现故障,我希望禁用该按钮,以便在服务器不可用时用户无法使用它。

我看了一下Websockets,看起来非常复杂。我不确定是否有更简单的方法。

修改

使用Websockets:我有一个阅读,似乎我需要使用onmessage事件。我找到了一些示例代码,但我不知道如何将它放入我的(文档).ready函数。

下面我有一些代码:

$(document).ready(function(){
  var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket;
  var chatSocket = new WS("routes");//This does not seem to accept any @routes
  var lastState = 'unknown';
  chatSocket.onmessage = function(e){
  var server_message = e.data;
  //do something here about enabling and disabling
  console.log(server_message);
  }
});

function disable()
{
  //disable all buttons
}
function enable()
{
  //enable all buttons
}

我迷失了如何在这里添加websocket。

1 个答案:

答案 0 :(得分:1)

我从这个similar question and answer

借来的

基本代码在这里:

var isNotWorking = false;

var myFunc = function(){

$.ajax({url: "YOUR_URL_HERE",
        type: "HEAD",
        timeout:1000,
        statusCode: {
            200: function (response) {
                //alert('Working!');
                isNotWorking =false;
            },
            400: function (response) {
                //alert('Not working!');
                isNotWorking = true;
            },
            0: function (response) {
                //alert('Not working!');
                isNotWorking = true;
            }              
        }
 });

    $('#mybutton').prop('disabled', isNotWorking);

    doSetTimeOut();
}

var doSetTimeOut = function(){

    setTimeout(function(){

        myFunc();


    }, 1000);

}


doSetTimeOut();

查看有效的JS小提琴here