Implemented WebSocket-based real-time messaging for both event rooms and private match chats using Socket.IO with comprehensive test coverage. Backend changes: - Installed socket.io@4.8.1 for WebSocket server - Created Socket.IO server with JWT authentication middleware - Implemented event room management (join/leave/messages) - Added active users tracking with real-time updates - Implemented private match room messaging - Integrated Socket.IO with Express HTTP server - Messages are persisted to PostgreSQL via Prisma - Added 12 comprehensive unit tests (89.13% coverage) Frontend changes: - Installed socket.io-client for WebSocket connections - Created socket service layer for connection management - Updated EventChatPage with real-time messaging - Updated MatchChatPage with real-time private chat - Added connection status indicators (● Connected/Disconnected) - Disabled message input when not connected Infrastructure: - Updated nginx config to proxy WebSocket connections at /socket.io - Added Upgrade and Connection headers for WebSocket support - Set long timeouts (7d) for persistent WebSocket connections Key features: - JWT-authenticated socket connections - Room-based architecture for events and matches - Real-time message broadcasting - Active users list with automatic updates - Automatic cleanup on disconnect - Message persistence in database Test coverage: - 12 tests passing (authentication, event rooms, match rooms, disconnect, errors) - Socket.IO module: 89.13% statements, 81.81% branches, 91.66% functions - Overall coverage: 81.19% Phase 1, Step 4 completed. Ready for Phase 2 (Core Features).
52 lines
1.2 KiB
JSON
52 lines
1.2 KiB
JSON
{
|
|
"name": "spotlightcam-backend",
|
|
"version": "1.0.0",
|
|
"description": "Backend API for spotlight.cam - P2P video exchange for dance events",
|
|
"main": "src/server.js",
|
|
"scripts": {
|
|
"start": "node src/server.js",
|
|
"dev": "nodemon src/server.js",
|
|
"test": "jest --coverage",
|
|
"test:watch": "jest --watch",
|
|
"prisma:generate": "prisma generate",
|
|
"prisma:migrate": "prisma migrate dev",
|
|
"prisma:seed": "node prisma/seed.js",
|
|
"prisma:studio": "prisma studio"
|
|
},
|
|
"keywords": [
|
|
"webrtc",
|
|
"p2p",
|
|
"video",
|
|
"dance",
|
|
"matchmaking"
|
|
],
|
|
"author": "",
|
|
"license": "ISC",
|
|
"dependencies": {
|
|
"@prisma/client": "^5.8.0",
|
|
"bcryptjs": "^2.4.3",
|
|
"cors": "^2.8.5",
|
|
"dotenv": "^16.3.1",
|
|
"express": "^4.18.2",
|
|
"express-validator": "^7.3.0",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"socket.io": "^4.8.1"
|
|
},
|
|
"devDependencies": {
|
|
"jest": "^29.7.0",
|
|
"nodemon": "^3.0.2",
|
|
"prisma": "^5.8.0",
|
|
"socket.io-client": "^4.8.1",
|
|
"supertest": "^6.3.3"
|
|
},
|
|
"jest": {
|
|
"testEnvironment": "node",
|
|
"coveragePathIgnorePatterns": [
|
|
"/node_modules/"
|
|
],
|
|
"testMatch": [
|
|
"**/__tests__/**/*.test.js"
|
|
]
|
|
}
|
|
}
|