Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-WebSocket send()方法未执行_Javascript_Java_Java Websocket - Fatal编程技术网

JavaScript-WebSocket send()方法未执行

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

我已经编写了一个简单的客户机-服务器应用程序,其中客户机使用Javascript中的WebSocket,服务器使用WebSocket的Jetty库。这是处理来自客户端的消息的服务器代码:

@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(“你好服务器”)未执行

但当我插入
警报(“已连接”)
after
sender=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()内部发送?再次感谢