【问题标题】:Java wesocket not connecting to JavascriptJava websocket未连接到Javascript
【发布时间】:2021-10-17 12:48:00
【问题描述】:

所以我有这个 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();

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

用于连接 WS 的 JavaScript 代码:

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

谢谢!

【问题讨论】:

标签: javascript java websocket


【解决方案1】:

ServerSocket 类不创建 WebSocket,而是创建 TCP socket。 WebSocket 是一个附加层,有自己的协议要求。

MDN 使用ServerSocket 提供了关于Writing a WebSocket server in Java 的教程。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多