mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
Redirecting not working
This commit is contained in:
parent
b744284472
commit
d37e6c540a
10 changed files with 59 additions and 28 deletions
|
|
@ -44,7 +44,7 @@ describe('WebSocketService', () => {
|
|||
|
||||
test('createRoom should emit create-room event', () => {
|
||||
WebsocketService.connect(ENV_VARIABLES.VITE_BACKEND_URL);
|
||||
WebsocketService.createRoom();
|
||||
WebsocketService.createRoom('test');
|
||||
expect(mockSocket.emit).toHaveBeenCalledWith('create-room');
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
|
||||
import { io,Socket } from 'socket.io-client';
|
||||
import { Socket } from 'socket.io-client';
|
||||
//import { ENV_VARIABLES } from '../../../constants';
|
||||
|
||||
import StudentModeQuiz from '../../../components/StudentModeQuiz/StudentModeQuiz';
|
||||
|
|
@ -34,15 +34,7 @@ const JoinRoom: React.FC = () => {
|
|||
}, []);
|
||||
|
||||
const handleCreateSocket = () => {
|
||||
debugger;
|
||||
const socket = io('/', {
|
||||
path: `/api/room/${roomName}/socket`,
|
||||
transports: ['websocket'],
|
||||
autoConnect: true,
|
||||
reconnection: true,
|
||||
reconnectionAttempts: 5,
|
||||
reconnectionDelay: 1000,
|
||||
});
|
||||
const socket = webSocketService.connect(`/api/room/${roomName}/socket`);
|
||||
|
||||
socket.on('join-success', () => {
|
||||
setIsWaitingForTeacher(true);
|
||||
|
|
|
|||
|
|
@ -79,14 +79,19 @@ const ManageRoom: React.FC = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const createWebSocketRoom = async() => {
|
||||
const createWebSocketRoom = async () => {
|
||||
setConnectingError('');
|
||||
const room = await(await fetch('/api/room',{method:'post'})).json();
|
||||
const room = await (await fetch('/api/room', { method: 'post' })).json();
|
||||
const socket = webSocketService.connect(`/api/room/${room.id}/socket`);
|
||||
|
||||
socket.on('connect', () => {
|
||||
webSocketService.createRoom();
|
||||
webSocketService.createRoom(room.id);
|
||||
});
|
||||
|
||||
socket.on("error", (error) => {
|
||||
console.error("WebSocket server error:", error);
|
||||
});
|
||||
|
||||
socket.on('connect_error', (error) => {
|
||||
setConnectingError('Erreur lors de la connexion... Veuillez réessayer');
|
||||
console.error('WebSocket connection error:', error);
|
||||
|
|
@ -143,7 +148,7 @@ const ManageRoom: React.FC = () => {
|
|||
console.log('Quiz questions not found (cannot update answers without them).');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Update the students state using the functional form of setStudents
|
||||
setStudents((prevStudents) => {
|
||||
// print the list of current student names
|
||||
|
|
@ -151,7 +156,7 @@ const ManageRoom: React.FC = () => {
|
|||
prevStudents.forEach((student) => {
|
||||
console.log(student.name);
|
||||
});
|
||||
|
||||
|
||||
let foundStudent = false;
|
||||
const updatedStudents = prevStudents.map((student) => {
|
||||
console.log(`Comparing ${student.id} to ${idUser}`);
|
||||
|
|
@ -171,7 +176,7 @@ const ManageRoom: React.FC = () => {
|
|||
updatedAnswers = [...student.answers, newAnswer];
|
||||
}
|
||||
return { ...student, answers: updatedAnswers };
|
||||
}
|
||||
}
|
||||
return student;
|
||||
});
|
||||
if (!foundStudent) {
|
||||
|
|
|
|||
|
|
@ -21,10 +21,14 @@ class WebSocketService {
|
|||
private socket: Socket | null = null;
|
||||
|
||||
connect(backendUrl: string): Socket {
|
||||
// console.log(backendUrl);
|
||||
this.socket = io(`${backendUrl}`, {
|
||||
this.socket = io( '/',{
|
||||
path: backendUrl,
|
||||
transports: ['websocket'],
|
||||
reconnectionAttempts: 1
|
||||
autoConnect: true,
|
||||
reconnection: true,
|
||||
reconnectionAttempts: 10,
|
||||
reconnectionDelay: 10000,
|
||||
timeout: 20000,
|
||||
});
|
||||
return this.socket;
|
||||
}
|
||||
|
|
@ -37,9 +41,14 @@ class WebSocketService {
|
|||
}
|
||||
}
|
||||
|
||||
createRoom() {
|
||||
createRoom(roomName: string) {
|
||||
if (this.socket) {
|
||||
this.socket.emit('create-room');
|
||||
if(roomName){
|
||||
this.socket.emit('create-room', {roomName});
|
||||
}
|
||||
else{
|
||||
this.socket.emit('create-room');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
import http from "http";
|
||||
import { Server, ServerOptions } from "socket.io";
|
||||
|
||||
// Import setupWebsocket
|
||||
import { setupWebsocket } from "./socket/setupWebSocket";
|
||||
import dotenv from "dotenv";
|
||||
|
||||
const port = 4500;
|
||||
// Load environment variables
|
||||
dotenv.config();
|
||||
|
||||
const port = 4500;
|
||||
const roomId = process.env.ROOM_ID; // Load roomId from environment variable
|
||||
console.log(`I am: /api/room/${roomId}/socket`);
|
||||
|
||||
// Create HTTP and WebSocket server
|
||||
const server = http.createServer();
|
||||
const ioOptions: Partial<ServerOptions> = {
|
||||
path: '/api/room/975239/socket', // TODO : use env variable to set room id
|
||||
path: `/api/room/${roomId}/socket`, // Use roomId from env variable
|
||||
cors: {
|
||||
origin: "*",
|
||||
methods: ["GET", "POST"],
|
||||
|
|
|
|||
12
quizRoom/package-lock.json
generated
12
quizRoom/package-lock.json
generated
|
|
@ -10,6 +10,7 @@
|
|||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@valkey/valkey-glide": "^1.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"http": "^0.0.1-security",
|
||||
"socket.io": "^4.8.1"
|
||||
},
|
||||
|
|
@ -509,6 +510,17 @@
|
|||
"node": ">=0.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.4.5",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
|
||||
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://dotenvx.com"
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io": {
|
||||
"version": "6.6.2",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz",
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@valkey/valkey-glide": "^1.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"http": "^0.0.1-security",
|
||||
"socket.io": "^4.8.1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,8 +88,14 @@ export const setupWebsocket = (io: Server): void => {
|
|||
idQuestion,
|
||||
});
|
||||
});
|
||||
|
||||
socket.on("error", (error) => {
|
||||
console.error("WebSocket server error:", error);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
const generateRoomName = (length = 6): string => {
|
||||
const characters = "0123456789";
|
||||
let result = "";
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"jsonwebtoken": "^9.0.2",
|
||||
"mongodb": "^6.3.0",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"net": "^1.0.2",
|
||||
"nodemailer": "^6.9.9",
|
||||
"socket.io": "^4.7.2",
|
||||
"socket.io-client": "^4.7.2"
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class DockerRoomProvider extends BaseRoomProvider {
|
|||
]
|
||||
}
|
||||
},
|
||||
Env: options.env || []
|
||||
Env: [...options.env || [], `ROOM_ID=${roomId}`]
|
||||
};
|
||||
|
||||
const container = await this.docker.createContainer(containerConfig);
|
||||
|
|
@ -34,11 +34,12 @@ class DockerRoomProvider extends BaseRoomProvider {
|
|||
|
||||
const containerInfo = await container.inspect();
|
||||
const containerIP = containerInfo.NetworkSettings.IPAddress;
|
||||
const host = `${containerIP}:4500`;
|
||||
|
||||
const host = `${containerIP}:4500`;
|
||||
return await this.roomRepository.create(new Room(roomId, container_name, host, 0));
|
||||
}
|
||||
|
||||
|
||||
async deleteRoom(roomId) {
|
||||
const container_name = `room_${roomId}`;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue