簡體   English   中英

使用 Java InputStreamReader 從 JavaScript WebSocket 讀取字符串

[英]Read string received from JavaScript WebSocket using Java InputStreamReader

我正在嘗試使用 Java 讀取從 JavaScript WebSocket 收到的值

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/p 除非您打算實現整個功能,否則我建議您不要使用原始ServerSocket ,而是使用提供開箱即用的 websocket 支持的庫。

我可以指出的一些選項是:

  • 網狀
  • 頂點x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM