刷新后Websocket evnt.data未定义

时间:2013-12-09 08:37:37

标签: java javascript websocket refresh undefined

我正在使用websocket来显示来自服务器的实时消息更新。

我的服务器代码段是: 我的服务器不断向我的客户端发送字符串,直到连接打开。

@OnMessage
public void onMessage(String message, @PathParam("client-id") String clientId) {

    for (Session client : clients) {
        while (client.isOpen()) {
            client.getAsyncRemote().sendObject(getStatus());

        }
    }

}

@OnClose
void onClose(Session peer) {
    System.out.println("Removed Peers");
    clients.remove(peer);
}

getStatus()函数返回逗号分隔的字符串。

我的客户端收到字符串(以逗号分隔的字符串)并继续调用setData(),它将html元素设置为该字符串的值。

我的客户端代码是:

var websocket;
var rows;
var vM;
function connect() {

    if ($.browser.mozilla) {
        webSocket = new MozWebSocket(URL);
    } else {
        webSocket = new WebSocket(URL);
    }
    websocket.onopen = function(evnt) {
        onOpen(evnt);
    };
    websocket.onmessage = function(evnt) {
        onMessage(evnt);
    };
    websocket.onerror = function(evnt) {
        onError(evnt);
    };
    websocket.onclose = function() {
        console.log("Disconnected");
    };

    displayMigration();    

}

function onOpen(evnt) {

  setInterval(function() {
    if (websocket.bufferedAmount === 0) {      
        websocket.send("connect");
    }
 }, 600);

}
function onMessage(evnt) {

if (typeof evnt.data === "string") {
    setData(evnt);
    startDataUpdation();
    console.log(evnt.data);
   }
}
function onError(evnt) {
    alert('ERROR: ' + evnt.data);
}
}

现在我的websocket按要求执行,直到刷新屏幕为止。一旦我刷新它,evnt.data是未定义的,所以即使连接打开并且在readyState = 1中,onMessage也不会被调用。

相同的行为反映在不同的浏览器中。我在glassfish server 4.0中使用Netbeans 7.4 j2ee

同样在刷新后我在控制台中收到此错误:

0 个答案:

没有答案