Java websocket 未连接到 Java 脚本

Java wesocket not connecting to Javascript

所以我有这个 java websocket 服务器,它位于单独的机器上,没有防火墙并打开了端口:

ServerSocket serverSocket = new ServerSocket(23547);
        Thread serverThread = new Thread(() -> {
            while(true) {
                try {
                    Socket connection = serverSocket.accept();

                    try (
                            BufferedReader serverReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                            Writer serverWriter = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
                    ) {
                        serverWriter.write("hello, " + serverReader.readLine() + "\n");
                        serverWriter.flush();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (Throwable t) {
                    t.printStackTrace();
                    throw t;
                }
            }
        });
        serverThread.setDaemon(true);
        serverThread.start();

并且在尝试使用 java 脚本收听时,我立即收到此“与 'ws://xxx.xxx.xxx.xx:23547/' 的 WebSocket 连接失败”,而在尝试访问其他随机端口时需要 5/8 秒抛出错误。

JavaScript 用于连接到 WS 的代码:

var exampleSocket = new WebSocket("ws://xxx.xxx.xxx.xx:23547");

谢谢!

ServerSocket class doesn't create a WebSocket, but a TCP socket。 WebSocket 是一个附加层,有自己的协议要求。

MDN 使用 ServerSocket.

提供了关于 Writing a WebSocket server in Java 的教程

如果您 运行 在 JavaEE 7 兼容容器中,您可以使用 Java API 的 WebSocket。 Oracle 提供了一个名为 "Java EE 7: Building Web Applications with WebSocket, JavaScript and HTML5".

的教程

还有许多第三方库可用于实现 WebSocket 服务器。这里有几个例子: