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 服务器。这里有几个例子:
所以我有这个 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
.
如果您 运行 在 JavaEE 7 兼容容器中,您可以使用 Java API 的 WebSocket。 Oracle 提供了一个名为 "Java EE 7: Building Web Applications with WebSocket, JavaScript and HTML5".
的教程还有许多第三方库可用于实现 WebSocket 服务器。这里有几个例子: