21
android-app/signaling-server/package.json
Archivo normal
21
android-app/signaling-server/package.json
Archivo normal
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "chatrtc-signaling-server",
|
||||
"version": "1.0.0",
|
||||
"description": "WebRTC signaling server for ChatRTC app",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"start": "node server.js",
|
||||
"dev": "nodemon server.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "^4.18.2",
|
||||
"socket.io": "^4.7.2",
|
||||
"cors": "^2.8.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^3.0.1"
|
||||
},
|
||||
"keywords": ["webrtc", "signaling", "socket.io", "chat"],
|
||||
"author": "ChatRTC Team",
|
||||
"license": "MIT"
|
||||
}
|
||||
61
android-app/signaling-server/server.js
Archivo normal
61
android-app/signaling-server/server.js
Archivo normal
@@ -0,0 +1,61 @@
|
||||
const express = require('express');
|
||||
const http = require('http');
|
||||
const socketIo = require('socket.io');
|
||||
const cors = require('cors');
|
||||
|
||||
const app = express();
|
||||
const server = http.createServer(app);
|
||||
const io = socketIo(server, {
|
||||
cors: {
|
||||
origin: "*",
|
||||
methods: ["GET", "POST"]
|
||||
}
|
||||
});
|
||||
|
||||
app.use(cors());
|
||||
app.use(express.static('public'));
|
||||
|
||||
const users = new Map();
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
console.log('User connected:', socket.id);
|
||||
|
||||
socket.on('join-room', (nickname) => {
|
||||
socket.nickname = nickname;
|
||||
users.set(socket.id, nickname);
|
||||
|
||||
// Notify others about new user
|
||||
socket.broadcast.emit('user-joined', nickname);
|
||||
|
||||
console.log(`${nickname} joined the room`);
|
||||
});
|
||||
|
||||
socket.on('offer', (data) => {
|
||||
console.log('Offer received from:', socket.nickname);
|
||||
socket.broadcast.emit('offer', data);
|
||||
});
|
||||
|
||||
socket.on('answer', (data) => {
|
||||
console.log('Answer received from:', socket.nickname);
|
||||
socket.broadcast.emit('answer', data);
|
||||
});
|
||||
|
||||
socket.on('ice-candidate', (data) => {
|
||||
console.log('ICE candidate received from:', socket.nickname);
|
||||
socket.broadcast.emit('ice-candidate', data);
|
||||
});
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
const nickname = users.get(socket.id);
|
||||
if (nickname) {
|
||||
users.delete(socket.id);
|
||||
socket.broadcast.emit('user-left', nickname);
|
||||
console.log(`${nickname} left the room`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const PORT = process.env.PORT || 3000;
|
||||
server.listen(PORT, () => {
|
||||
console.log(`Signaling server running on port ${PORT}`);
|
||||
});
|
||||
Referencia en una nueva incidencia
Block a user