Files
chatrtc/android-app/signaling-server/server.js
2025-06-15 16:19:32 +02:00

62 líneas
1.6 KiB
JavaScript

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}`);
});