From 46dae02d47b2066d9301296a57207bd667e0d345 Mon Sep 17 00:00:00 2001 From: "C. Fuhrman" Date: Wed, 30 Oct 2024 17:19:11 -0400 Subject: [PATCH 1/2] Console.log debug info --- client/src/pages/Student/JoinRoom/JoinRoom.tsx | 5 +++-- client/src/pages/Teacher/ManageRoom/ManageRoom.tsx | 3 ++- server/app.js | 3 +++ server/socket/socket.js | 12 ++++++------ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/client/src/pages/Student/JoinRoom/JoinRoom.tsx b/client/src/pages/Student/JoinRoom/JoinRoom.tsx index e29bfb7..d6a6b09 100644 --- a/client/src/pages/Student/JoinRoom/JoinRoom.tsx +++ b/client/src/pages/Student/JoinRoom/JoinRoom.tsx @@ -34,6 +34,7 @@ const JoinRoom: React.FC = () => { }, []); const handleCreateSocket = () => { + console.log(`JoinRoom: handleCreateSocket: ${ENV_VARIABLES.VITE_BACKEND_URL}`); const socket = webSocketService.connect(ENV_VARIABLES.VITE_BACKEND_URL); socket.on('join-success', () => { @@ -63,10 +64,10 @@ const JoinRoom: React.FC = () => { socket.on('connect_error', (error) => { switch (error.message) { case 'timeout': - setConnectionError("Le serveur n'est pas disponible"); + setConnectionError("JoinRoom: timeout: Le serveur n'est pas disponible"); break; case 'websocket error': - setConnectionError("Le serveur n'est pas disponible"); + setConnectionError("JoinRoom: websocket error: Le serveur n'est pas disponible"); break; } setIsConnecting(false); diff --git a/client/src/pages/Teacher/ManageRoom/ManageRoom.tsx b/client/src/pages/Teacher/ManageRoom/ManageRoom.tsx index 6670240..feb0b8c 100644 --- a/client/src/pages/Teacher/ManageRoom/ManageRoom.tsx +++ b/client/src/pages/Teacher/ManageRoom/ManageRoom.tsx @@ -80,6 +80,7 @@ const ManageRoom: React.FC = () => { }; const createWebSocketRoom = () => { + console.log('Creating WebSocket room...'); setConnectingError(''); const socket = webSocketService.connect(ENV_VARIABLES.VITE_BACKEND_URL); @@ -88,7 +89,7 @@ const ManageRoom: React.FC = () => { }); socket.on('connect_error', (error) => { setConnectingError('Erreur lors de la connexion... Veuillez réessayer'); - console.error('WebSocket connection error:', error); + console.error('ManageRoom: WebSocket connection error:', error); }); socket.on('create-success', (roomName: string) => { setRoomName(roomName); diff --git a/server/app.js b/server/app.js index 868b3b8..faef1b3 100644 --- a/server/app.js +++ b/server/app.js @@ -69,8 +69,11 @@ let isDev = process.env.NODE_ENV === 'development'; console.log(`Environnement: ${process.env.NODE_ENV} (${isDev ? 'dev' : 'prod'})`); const io = configureServer(server); +console.log(`server.io configured: ${io.secure ? 'secure' : 'not secure'}`); setupWebsocket(io); +console.log(`Websocket setup with on() listeners.`); + app.use(cors()); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); diff --git a/server/socket/socket.js b/server/socket/socket.js index 3bb0a76..fc21632 100644 --- a/server/socket/socket.js +++ b/server/socket/socket.js @@ -16,12 +16,12 @@ const setupWebsocket = (io) => { } totalConnections++; - // console.log( - // "A user connected:", - // socket.id, - // "| Total connections:", - // totalConnections - // ); + console.log( + "A user connected:", + socket.id, + "| Total connections:", + totalConnections + ); socket.on("create-room", (sentRoomName) => { if (sentRoomName) { From 8be2efbe48344a2ec5001132bd2da76faac07ca9 Mon Sep 17 00:00:00 2001 From: "C. Fuhrman" Date: Wed, 30 Oct 2024 17:20:13 -0400 Subject: [PATCH 2/2] try to force the correct url (ws: or wss:) on the socket when it's created --- client/src/services/WebsocketService.tsx | 31 +++++++++++++++--------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/client/src/services/WebsocketService.tsx b/client/src/services/WebsocketService.tsx index c5f74be..1ee91fb 100644 --- a/client/src/services/WebsocketService.tsx +++ b/client/src/services/WebsocketService.tsx @@ -21,14 +21,21 @@ class WebSocketService { private socket: Socket | null = null; connect(backendUrl: string): Socket { - // console.log(backendUrl); - this.socket = io(`${backendUrl}`, { + console.log(`WebSocketService.connect(${backendUrl})`); + + // Ensure the URL uses wss: if the page is loaded over https: + const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; + const url = backendUrl.replace(/^http:/, protocol); + console.log(`WebSocketService.connect: changed url=${url}`); + + this.socket = io(url, { transports: ['websocket'], reconnectionAttempts: 1 }); + return this.socket; } - + disconnect() { if (this.socket) { @@ -74,15 +81,15 @@ class WebSocketService { // idQuestion: string ) { if (this.socket) { - this.socket?.emit('submit-answer', - // { - // answer: answer, - // roomName: roomName, - // username: username, - // idQuestion: idQuestion - // } - answerData - ); + this.socket?.emit('submit-answer', + // { + // answer: answer, + // roomName: roomName, + // username: username, + // idQuestion: idQuestion + // } + answerData + ); } } }