Bug Description
When two authenticated users join the same online debate room, real-time room state is not reliably synchronized between them.
The creator may continue seeing “Waiting for opponent” after the opponent joins. Role selections and ready-status changes may also fail to appear on the other user's screen.
The issue becomes especially noticeable after selecting a debate role, after which subsequent WebSocket events can stop being processed.
Steps to Reproduce
- Start the frontend and backend.
- Sign in using two different accounts in separate browser profiles.
- From account A, create an online debate room.
- From account B, join using the room code.
- Select a debate role from either account.
- Press “I'm Ready”.
- Observe the participant, role, or ready state on the other account.
Logs and Screenshots
No response
Environment Details
- OS: Microsoft Windows 11 Home Single Language (10.0.26200)
- Browser: Google Chrome 151
- Node.js: v24.18.0
- npm: 11.18.0
- Go: 1.26.5 (windows/amd64)
- Docker: 29.6.2
- Docker Compose: v5.3.1
- Frontend: React/Vite running on port 5173
- Backend: Go/Gin running on port 1313
- Database: MongoDB through Docker Compose
- Real-time services: WebSocket and Redis 7 Alpine
- Tested using two different authenticated accounts in separate browser sessions
Impact
Critical - Application is unusable
Code of Conduct
Bug Description
When two authenticated users join the same online debate room, real-time room state is not reliably synchronized between them.
The creator may continue seeing “Waiting for opponent” after the opponent joins. Role selections and ready-status changes may also fail to appear on the other user's screen.
The issue becomes especially noticeable after selecting a debate role, after which subsequent WebSocket events can stop being processed.
Steps to Reproduce
Logs and Screenshots
No response
Environment Details
Impact
Critical - Application is unusable
Code of Conduct