├── .gitignore ├── README.md ├── package.json ├── server.js └── public └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Web_RTC_Connection 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webrtc", 3 | "version": "1.0.0", 4 | "main": "server.js", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1", 7 | "start": "node server.js" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "description": "", 13 | "dependencies": { 14 | "express": "^5.1.0", 15 | "socket.io": "^4.8.1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | // const express = require('express'); 2 | // const http = require('http'); 3 | // const { Server } = require('socket.io'); 4 | // const path = require('path'); 5 | 6 | // const app = express(); 7 | // const server = http.createServer(app); 8 | // const io = new Server(server); 9 | 10 | // app.use(express.static(path.join(__dirname, 'public'))); 11 | 12 | // io.on('connection', (socket) => { 13 | // console.log('New client connected:', socket.id); 14 | 15 | // socket.on('join', (roomId) => { 16 | // socket.join(roomId); 17 | // socket.to(roomId).emit('user-joined', socket.id); 18 | // }); 19 | 20 | // socket.on('offer', (data) => { 21 | // socket.to(data.room).emit('offer', data); 22 | // }); 23 | 24 | // socket.on('answer', (data) => { 25 | // socket.to(data.room).emit('answer', data); 26 | // }); 27 | 28 | // socket.on('ice-candidate', (data) => { 29 | // socket.to(data.room).emit('ice-candidate', data.candidate); 30 | // }); 31 | 32 | // socket.on('disconnect', () => { 33 | // console.log('Client disconnected:', socket.id); 34 | // }); 35 | // }); 36 | 37 | // server.listen(3000, () => { 38 | // console.log('Server is running on http://localhost:3000'); 39 | // }); 40 | 41 | 42 | const express = require('express'); 43 | const http = require('http'); 44 | const { Server } = require('socket.io'); 45 | const path = require('path'); 46 | 47 | const app = express(); 48 | const server = http.createServer(app); 49 | const io = new Server(server); 50 | 51 | app.use(express.static(path.join(__dirname, 'public'))); 52 | 53 | const rooms = {}; 54 | 55 | io.on('connection', (socket) => { 56 | console.log('Connected:', socket.id); 57 | 58 | socket.on('join', (roomId) => { 59 | socket.join(roomId); 60 | if (!rooms[roomId]) rooms[roomId] = []; 61 | rooms[roomId].push(socket.id); 62 | 63 | const otherUsers = rooms[roomId].filter(id => id !== socket.id); 64 | socket.emit('all-users', otherUsers); 65 | 66 | socket.to(roomId).emit('user-joined', socket.id); 67 | 68 | socket.on('sending-signal', payload => { 69 | io.to(payload.userToSignal).emit('user-signal', { 70 | signal: payload.signal, 71 | callerId: payload.callerId, 72 | }); 73 | }); 74 | 75 | socket.on('returning-signal', payload => { 76 | io.to(payload.callerId).emit('receiving-returned-signal', { 77 | signal: payload.signal, 78 | id: socket.id, 79 | }); 80 | }); 81 | 82 | socket.on('disconnect', () => { 83 | rooms[roomId] = rooms[roomId]?.filter(id => id !== socket.id); 84 | socket.to(roomId).emit('user-left', socket.id); 85 | }); 86 | }); 87 | }); 88 | 89 | server.listen(3000, () => { 90 | console.log('Server running at http://localhost:3000'); 91 | }); 92 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 |
151 | 152 |