使用 Java InputStreamReader 读取从 JavaScript WebSocket 接收的字符串
Read string received from JavaScript WebSocket using Java InputStreamReader
我正在尝试使用 Java 读取从 JavaScript WebSocket 接收到的值
我有这个 Java脚本代码:
const socket = new WebSocket("wss://localhost:7999"); // start
socket.addEventListener("open", (event) => {
socket.send("Hello!");
});
socket.addEventListener("message", (event) => {
console.log("Received message.");
});
还有这个 Java 代码:
import java.io.*;
import java.net.*;
class Server {
public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(7999);
Socket client = s.accept();
System.out.println("I am in!");
InputStream inputStream = client.getInputStream();
InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader in = new BufferedReader(reader);
String readLine;
while ((readLine = in.readLine()) != null) {
System.out.println(readLine);
}
}
}
但是,在启动服务器和客户端代码时,我收到了这个值:
I am in!
���
�.isֿ���pO?��-4/P�P����- ���Q�`�:���x���wG�Z��x��v�##�6���,�+̩�0�/̨�$�#�
� �(�'����=<5/�
}�� localhost�
��http/1.1
3+)�� �-l-h������ۥ n�}�>�zUZ�Ğ�-+
我的目标是读取我使用 socket.send
发送的值 Hello
。
有谁知道如何解决这个问题?
谢谢。
ServerSocket
是用于处理 TCP 连接的非常低级的结构。
Websocket 即使它以 HTTP 请求开始,它也需要服务器请求连接升级,有握手,然后处理 websocket 帧,包括一些内部帧,如 ping/pong。
除非您打算实现全部功能,否则我建议您不要使用原始 ServerSocket
,而是使用提供开箱即用的 websocket 支持的库。
我可以指出的一些选项是:
- 网络
- vert.x
我正在尝试使用 Java 读取从 JavaScript WebSocket 接收到的值 我有这个 Java脚本代码:
const socket = new WebSocket("wss://localhost:7999"); // start
socket.addEventListener("open", (event) => {
socket.send("Hello!");
});
socket.addEventListener("message", (event) => {
console.log("Received message.");
});
还有这个 Java 代码:
import java.io.*;
import java.net.*;
class Server {
public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(7999);
Socket client = s.accept();
System.out.println("I am in!");
InputStream inputStream = client.getInputStream();
InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader in = new BufferedReader(reader);
String readLine;
while ((readLine = in.readLine()) != null) {
System.out.println(readLine);
}
}
}
但是,在启动服务器和客户端代码时,我收到了这个值:
I am in!
���
�.isֿ���pO?��-4/P�P����- ���Q�`�:���x���wG�Z��x��v�##�6���,�+̩�0�/̨�$�#�
� �(�'����=<5/�
}�� localhost�
��http/1.1
3+)�� �-l-h������ۥ n�}�>�zUZ�Ğ�-+
我的目标是读取我使用 socket.send
发送的值 Hello
。
有谁知道如何解决这个问题?
谢谢。
ServerSocket
是用于处理 TCP 连接的非常低级的结构。
Websocket 即使它以 HTTP 请求开始,它也需要服务器请求连接升级,有握手,然后处理 websocket 帧,包括一些内部帧,如 ping/pong。
除非您打算实现全部功能,否则我建议您不要使用原始 ServerSocket
,而是使用提供开箱即用的 websocket 支持的库。
我可以指出的一些选项是:
- 网络
- vert.x