Websocket всегда закрывается с использованием Tomcat 10.1 в Java JEEJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Websocket всегда закрывается с использованием Tomcat 10.1 в Java JEE

Сообщение Anonymous »

Я работаю над приложением Java JEE, используя WebSocket с сервером Tomcat 10.1. Моя цель — создать игру для одного игрока (хост) через WebSocket и позволить другим игрокам присоединяться к этой игре в режиме реального времени локально, заменив «localhost» на ipv4 хост-игрока. Однако у меня возникла проблема: метод onMessage в моем классе WebSocket никогда не срабатывает, даже когда я отправляю сообщение от клиента.
Вот моя страница лобби.jsp, на которой есть 2 кнопки «Создать» и «Присоединиться».
lobby.jsp :
Bienvenue, ! Choisissez une option pour continuer :

Create Game


Join Game


function joinGame(event) {
event.preventDefault();
window.location.href = "joinGame.jsp";
}


когда я нажимаю «Создать игру», я получаю следующее:
CreateGameServlet:
package controller;

import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession;

import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement;

@WebServlet("/createGameSocket") public class CreateGameServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");

if (username == null) {
response.sendRedirect("index.jsp");
return;
}

String gameCode = java.util.UUID.randomUUID().toString().substring(0, 6).toUpperCase();
session.setAttribute("gameCode", gameCode);
System.out.println("Voici le gameCode : " + gameCode);

try {

Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/game_db", "root", "test");

String insertQuery = "INSERT INTO games (host_player_id, code, status) VALUES (?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(insertQuery);

int hostPlayerId = 1; // À modifier pour récupérer l'ID réel de l'utilisateur connecté
stmt.setInt(1, hostPlayerId);
stmt.setString(2, gameCode);
stmt.setString(3, "waiting");
stmt.executeUpdate();

stmt.close();
conn.close();

response.sendRedirect("createGame.jsp?code=" + gameCode);
} catch (Exception e) {
e.printStackTrace();
response.getWriter().println("Erreur lors de la création de la partie : " + e.getMessage());
}
}
}

который вызовет скрипт createGame:
createGame.jsp


Créer une partie
Partie créée avec succès
Attendez que les joueurs se connectent, puis démarrez la partie.


Démarrer la partie


Partie créée avec succès
Donnez ces informations aux joueurs pour qu'ils se connectent :
Adresse IPv4 : 192.168.56.1
Code de la partie :
Joueurs connectés :


const gameCode = "";
const socket = new WebSocket("ws://192.168.56.1:8080/gameSocket");

socket.onopen = () => {
console.log("Connexion WebSocket ouverte");
socket.send(JSON.stringify({ type: "host", gameCode: gameCode }));
};

socket.onmessage = (event) => {
console.log("Message reçu : ", event.data);
const data = JSON.parse(event.data);
if (data.message) {
document.getElementById("players").textContent = data.message;
}
};

socket.onerror = (error) => {
console.error("Erreur WebSocket : ", error);
};

socket.onclose = () => {
console.log("Connexion WebSocket fermée");
};

function startGame() {
console.log("Partie démarrée !");

}


на всякий случай:
web.xml:



index.html
index.jsp
index.htm
default.html
default.jsp
default.htm




Подробнее здесь: https://stackoverflow.com/questions/793 ... n-java-jee
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»