secure-webrtc-sdk
Version:
Secure P2P WebRTC SDK with built-in signaling server and React hook
54 lines (52 loc) • 1.74 kB
JavaScript
// 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));
});
}