将 javascript WebSocket 连接到 Java ServerSocket
Connect a javascript WebSocket with a Java ServerSocket
我正在尝试将 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 服务器。
我正在尝试将 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 服务器。