Я пытаюсь сделать связь между сервером в Java и JavaScript клиент, но я получаю эту ошибку на стороне клиента:сервер Java JavaScript клиент WebSockets
связи WebSocket к «WS://127.0.0.1:4444/»не удались: Соединение закрыто до получения ответа квитирования
Это может быть, остается на открывающемся состояние, так как функция connection.onopen
никогда не вызываются. console.log('Connected!')
не вызывается.
Может кто-то дайте мне знать, что происходит здесь не так?
Сервер
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;
}
}
Клиент
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);
};
Я попробовал и он работал просто отлично ... ВАЗе t браузер, который вы используете для своего теста? Кроме того, есть ли какой-либо брандмауэр, который мог бы блокировать/блокировать ответ? – Igor
Я использую Chrome 55. Не знаю. Кроме того, если я распечатываю ответ на стороне сервера, я получил сообщение, которое я поставил выше. – agfac
Все кажется нормально ... Может, попробуй еще один порт? Как и 12000 или выше, я слышал, что некоторые системы не любят низкие номера портов ... Я просто размышляю, потому что я понятия не имею, что может быть разница между нашими настройками ... – Igor