为什么websocket.send()取决于警报?

时间:2014-09-14 17:31:09

标签: java javascript java-ee glassfish

我使用websockets和Glassfish。我在加载页面上调用start()函数。当启动功能包含警报时,它会将消息发送到服务器,但是当我没有发出警报时它不起作用。我无法弄清楚原因。

java脚本

function start() {
   alert('a'); //this alert
   webSocket.send('start_server');
}

function onMessage(event) {
    document.getElementById('messages').innerHTML
    += event.data;
}

服务器端

@OnMessage
public void onMessage(String message, Session session) 
    throws IOException, InterruptedException {

    System.out.println("Message recieved");
    session.getBasicRemote().sendText(message);

}   

@OnOpen
public void onOpen() {
    System.out.println("Client connected");
}

1 个答案:

答案 0 :(得分:1)

在哪里初始化客户端的Web套接字? 警报暂停执行,直到您单击确定 - 所以我猜您的执行顺序是错误的(在 webSocket.send 之前初始化websocket)

您可以在 WebSocket#open 事件发生后发送数据。

var connection = new WebSocket(...) connection.onopen = function () { connection.send('Ping'); };

来源:html5rocks