Ich versuche, eine Verbindung zwischen einem Server in Java und JavaScript-Client zu tun, aber ich bin immer diesen Fehler auf Client-Seite:Java Server JavaScript-Client WebSockets
WebSocket-Verbindung zu ‚ws://127.0.0.1:4444/‘ist fehlgeschlagen: Verbindung geschlossen, bevor ein Handshake-Antwort
Empfang vielleicht auf Sie bleibt openning Zustand, weil die connection.onopen
Funktion nie aufgerufen wird. Die console.log('Connected!')
wird nicht aufgerufen.
Könnte mich jemand wissen lassen, was hier falsch läuft?
Server
import java.io.IOException;
import java.net.ServerSocket;
public class Server {
public static void main(String[] args) throws IOException {
try (ServerSocket serverSocket = new ServerSocket(4444)) {
GameProtocol gp = new GameProtocol();
ServerThread player= new ServerThread(serverSocket.accept(), gp);
player.start();
} catch (IOException e) {
System.out.println("Could not listen on port: 4444");
System.exit(-1);
}
}
}
Serverthread
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThread extends Thread{
private Socket socket = null;
private GameProtocol gp;
public ServerThread(Socket socket, GameProtocol gp) {
super("ServerThread");
this.socket = socket;
this.gp = gp;
}
public void run() {
try (
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
) {
String inputLine, outputLine;
while ((inputLine = in.readLine()) != null) {
outputLine = gp.processInput(inputLine);
System.out.println(outputLine);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
GameProtocol
public class GameProtocol {
public String processInput(String theInput) {
String theOutput = null;
theOutput = theInput;
return theOutput;
}
}
Kunde
var connection = new WebSocket('ws://127.0.0.1:4444');
connection.onopen = function() {
console.log('Connected!');
connection.send('Ping'); // Send the message 'Ping' to the server
};
// Log errors
connection.onerror = function (error) {
console.log('WebSocket Error ' + error);
};
// Log messages from the server
connection.onmessage = function (e) {
console.log('Server: ' + e.data);
};
ich versuchte es und es funktionierte gut ... Wha t Browser benutzen Sie für Ihren Test? Gibt es auch eine Firewall, die die Antwort blockieren könnte? – Igor
Ich benutze Chrome 55. Ich weiß nicht. Außerdem, wenn ich die Antwort auf Serverseite ausdrucke, habe ich die Nachricht erhalten, die ich oben gesetzt habe. – agfac
Alles scheint in Ordnung ... Vielleicht, versuchen Sie einen anderen Port? Wie 12000 oder höher, hörte ich, dass einige Systeme niedrige Port-Nummern nicht mögen ... Ich spekuliere nur, weil ich keine Ahnung habe, was der Unterschied zwischen unseren Setups sein könnte ... – Igor