UNPKG

secure-webrtc-sdk

Version:

Secure P2P WebRTC SDK with built-in signaling server and React hook

54 lines (52 loc) 1.74 kB
// server.js import express from 'express'; import http from 'http'; import { Server } from 'socket.io'; import cors from 'cors'; export default function startServer() { var port = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5000; var app = express(); app.use(cors()); var server = http.createServer(app); var io = new Server(server, { cors: { origin: '*' } }); var rooms = {}; // { roomId: [socketId, ...] } io.on('connection', function (socket) { console.log("\uD83D\uDD0C New connection: ".concat(socket.id)); socket.on('join', function (roomId) { if (!rooms[roomId]) rooms[roomId] = []; rooms[roomId].push(socket.id); var otherUsers = rooms[roomId].filter(function (id) { return id !== socket.id; }); // Send existing users to the newly joined one socket.emit('all-users', otherUsers); console.log("\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1 ".concat(socket.id, " joined room ").concat(roomId)); }); socket.on('sending-signal', function (payload) { io.to(payload.userToSignal).emit('user-joined', { signal: payload.signal, callerID: payload.callerID }); }); socket.on('returning-signal', function (payload) { io.to(payload.callerID).emit('receiving-returned-signal', { signal: payload.signal, id: socket.id }); }); socket.on('disconnect', function () { for (var roomId in rooms) { rooms[roomId] = rooms[roomId].filter(function (id) { return id !== socket.id; }); } }); }); server.listen(port, function () { console.log("\u2705 Signaling server started on port ".concat(port)); }); }