JavaScript-WebSocket send()方法未执行
我已经编写了一个简单的客户机-服务器应用程序,其中客户机使用Javascript中的WebSocket,服务器使用WebSocket的Jetty库。这是处理来自客户端的消息的服务器代码:JavaScript-WebSocket send()方法未执行,javascript,java,java-websocket,Javascript,Java,Java Websocket,我已经编写了一个简单的客户机-服务器应用程序,其中客户机使用Javascript中的WebSocket,服务器使用WebSocket的Jetty库。这是处理来自客户端的消息的服务器代码: @OnWebSocketConnect public void onConnect(Session session) { System.out.println("Connected"); } @OnWebSocketMessage public void on
@OnWebSocketConnect
public void onConnect(Session session) {
System.out.println("Connected");
}
@OnWebSocketMessage
public void onMessage(String message) {
System.out.println(message);
}
这是发送消息时客户端的代码:
function Search() {
"use strict";
sender = new WebSocket("ws://localhost:8080");
sender.send("Hello server");
sender.close();
}
因此,当我调用“搜索”函数时,服务器的输出如下:
这意味着行sender.send(“你好服务器”)代码>未执行
但当我插入警报(“已连接”)
aftersender=newwebsocket(“ws://localhost:8080”)代码>这是新的输出:
我已经阅读了有关send()
的文档,但它没有解决这个问题。你知道为什么会发生这种情况吗?你不是在等待连接真正打开。它与alert()
配合使用的原因是,您可以获得时间让套接字完成连接
试试这个:
sender = new WebSocket(...)
sender.onopen = function() {
sender.send('Hello server')
sender.close()
}
当连接准备好发送和接收数据时,将执行设置为打开的功能
为什么?
当您执行新建WebSocket()
时,Javascript不会等到套接字完全连接后再继续下一行代码。连接只是按计划进行的
这与Java不同,Java是您正在使用的另一种语言,在Java中,执行通常会在继续之前阻塞
在您的文章中,在创建套接字后立即调用close()
。这将无法连接然后断开连接。连接永远不会完成,因为您只计划了一个连接并立即取消了它。谢谢您的回复。我以前使用过这个方法,但似乎send()函数只在onopen()中起作用。例如,在执行以下代码时:function Search(){“use strict”;sender=new WebSocket(“ws://localhost:8080”);sender.onopen=function(){sender.send(“Hello Server!”;};sender.send(“Hello再次!”);sender.close();}自建立连接以来,onopen()后面的行应该执行,但事实并非如此。消息是否只能从onopen()内部发送?再次感谢