我正在尝试将 javascript 连接到 Java,但遇到一些错误:

JavaScript 端出错:

WebSocket connection to 'wss://127.0.0.1:1234/' failed: WebSocket opening handshake timed out 

Java端错误:

java.io.EOFException 
at java.io.DataInputStream.readFully(DataInputStream.java:197) 
at java.io.DataInputStream.readUTF(DataInputStream.java:609) 
at java.io.DataInputStream.readUTF(DataInputStream.java:564) 
at networkingtest.Server.start(Server.java:29) 
at networkingtest.NetworkingTest.main(NetworkingTest.java:9) 

这是我的 JavaScript 代码:

var connection; 
 
function init() { 
    connection = new WebSocket('wss://127.0.0.1:1234/'); 
    connection.onopen = function () { 
        connection.send('Ping'); 
    }; 
} 

这是Java代码:

package networkingtest; 
 
import java.io.*; 
import java.net.*; 
 
public class Server { 
 
    public ServerSocket ss; 
    public Socket s; 
    public int port; 
 
    public Server(int p) { 
        port = p; 
    } 
 
    public void start() { 
        try { 
            ss = new ServerSocket(port); 
            s = ss.accept(); 
            DataInputStream di = new DataInputStream(s.getInputStream()); 
            while (true) { 
                if (s.isConnected()) { 
                    System.out.println(di.readUTF()); 
                } else { 
                    System.exit(0); 
                } 
            } 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
 
} 

我看不出我做错了什么。是Java端的错误还是javascript端的错误?

请您参考如下方法:

webSocket 不是普通的 TCP 套接字。它具有完整的连接方案、安全方案和数据格式。因此,webSocket 客户端只能与 webSocket 服务器通信。如果您尝试将 webSocket 客户端连接到非 webSocket 服务器,客户端将看不到正确的响应并会立即断开连接。您在客户端看到的错误:

WebSocket opening handshake timed out 

是因为客户端在第一次连接时没有看到服务器期望的响应。

您可以将 webSocket 库与 Java 服务器结合使用,在 Java 代码中实现 webSocket 服务器。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!