java - 为什么 websocket.send() 依赖于alert?

标签 java javascript jakarta-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");
}

最佳答案

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

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

var 连接 = new WebSocket(...) 连接.onopen = 函数() { 连接.send('Ping'); };

来源:html5rocks

关于java - 为什么 websocket.send() 依赖于alert?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836010/

相关文章:

java - Modelmapper:将列表中的元素映射到 POJO 中的字段

java - 使用 scala 或 java 的 LDAP 身份验证

Javascript GeoLocation 无法在 Chrome 上运行

javascript - 如何手动触发提交功能?

带有 Web 服务器 + 应用程序服务器的 Java EE 应用程序

java - Appengine 和 GWT - 为 python 提供一些 java

java - 无法从 ListArray 中获取随机元素

javascript - Vue 组件小计总和

jpa - 必须在 ConnectionDriverName 属性 "How to solve it?"中指定 JDBC 驱动程序或 DataSource 类名

java - 在 Glassfish v3 中,Servlet 请求无明显原因地按顺序执行