我正在尝试将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方面的错误?
答案 0 :(得分:0)
webSocket不是普通的TCP套接字。它具有完整的连接方案,安全方案和数据格式。因此,webSocket客户端只能与webSocket服务器通信。如果您尝试将webSocket客户端连接到非webSocket服务器,则客户端将看不到正确的响应并立即断开连接。您在客户端看到的错误:
WebSocket opening handshake timed out
是因为客户端在第一次连接时没有看到服务器所期望的响应。
您可以将webSocket库与Java服务器一起使用,以在Java代码中实现webSocket服务器。