Skip to content

Commit

Permalink
Integrate with socketio
Browse files Browse the repository at this point in the history
  • Loading branch information
jbaudanza committed Sep 30, 2020
1 parent 0d8661d commit 91dda48
Show file tree
Hide file tree
Showing 2 changed files with 2,139 additions and 5 deletions.
66 changes: 61 additions & 5 deletions single-page/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ const roomState = {

expressApp.use(express.static(__dirname));

function startHttpsServer() {
function createHttpsServer() {
const https = require('https');

const tls = {
Expand All @@ -92,12 +92,21 @@ function startHttpsServer() {
return https.createServer(tls, expressApp);
}

function startHttpServer() {
function createHttpServer() {
const http = require('http');
const server = http.createServer(expressApp);
return server;
}

let io;

function updatePeers() {
io.emit("peers", {
peers: roomState.peers,
activeSpeaker: roomState.activeSpeaker
});
}

//
// main() -- our execution entry point
//
Expand All @@ -120,20 +129,37 @@ async function main() {
} else {
throw e;
}
expressApp.listen(config.httpPort, config.httpIp, () => {
console.log(`http server listening on port ${config.httpPort}`);
});
}

server.on('error', (e) => {
console.error('https server error,', e.message);
process.exit(1);
});

server.listen(config.httpPort, config.httpIp, () => {
console.log(`server is running and listening on ` +
`https://${config.httpIp}:${config.httpPort}`);
});

// Socket.io
io = require('socket.io')(server, { serveClient: false });

io.on('connection', socket => {
function logSocket(msg) {
console.log(`[${new Date().toISOString()}] ${socket.id} ${msg}`)
}

logSocket("socketio connection");

socket.emit("peers", {
peers: roomState.peers,
activeSpeaker: roomState.activeSpeaker
});

socket.on('disconnect', () => {
logSocket(`socketio disconnect`);
});
});

// periodically clean up peers that disconnected without sending us
// a final "beacon"
Expand All @@ -143,6 +169,7 @@ async function main() {
if ((now - p.lastSeenTs) > config.httpPeerStale) {
warn(`removing stale peer ${id}`);
closePeer(id);
updatePeers();
}
});
}, 1000);
Expand Down Expand Up @@ -253,12 +280,25 @@ expressApp.post('/signaling/join-as-new-peer', async (req, res) => {
};

res.send({ routerRtpCapabilities: router.rtpCapabilities });

updatePeers();
} catch (e) {
console.error('error in /signaling/join-as-new-peer', e);
res.send({ error: e });
}
});

// --> /signaling/router-capabilities
//
//
expressApp.post('/signaling/router-capabilities', async (req, res) => {
try {
res.send({ routerRtpCapabilities: router.rtpCapabilities });
} catch (e) {
res.send({ error: e });
}
});

// --> /signaling/leave
//
// removes the peer from the roomState data structure and and closes
Expand All @@ -271,6 +311,8 @@ expressApp.post('/signaling/leave', async (req, res) => {

await closePeer(peerId);
res.send({ left: true });

updatePeers();
} catch (e) {
console.error('error in /signaling/leave', e);
res.send({ error: e });
Expand Down Expand Up @@ -318,6 +360,8 @@ async function closeProducer(producer) {
delete (roomState.peers[producer.appData.peerId]
.media[producer.appData.mediaTag]);
}

updatePeers();
} catch (e) {
err(e);
}
Expand Down Expand Up @@ -354,6 +398,8 @@ expressApp.post('/signaling/create-transport', async (req, res) => {
res.send({
transportOptions: { id, iceParameters, iceCandidates, dtlsParameters }
});

updatePeers();
} catch (e) {
console.error('error in /signaling/create-transport', e);
res.send({ error: e });
Expand Down Expand Up @@ -398,6 +444,8 @@ expressApp.post('/signaling/connect-transport', async (req, res) => {

await transport.connect({ dtlsParameters });
res.send({ connected: true });

updatePeers();
} catch (e) {
console.error('error in /signaling/connect-transport', e);
res.send({ error: e });
Expand All @@ -424,6 +472,8 @@ expressApp.post('/signaling/close-transport', async (req, res) => {

await closeTransport(transport);
res.send({ closed: true });

updatePeers();
} catch (e) {
console.error('error in /signaling/close-transport', e);
res.send({ error: e.message });
Expand All @@ -449,6 +499,8 @@ expressApp.post('/signaling/close-producer', async (req, res) => {

await closeProducer(producer);
res.send({ closed: true });

updatePeers();
} catch (e) {
console.error(e);
res.send({ error: e.message });
Expand Down Expand Up @@ -499,7 +551,11 @@ expressApp.post('/signaling/send-track', async (req, res) => {
};

res.send({ id: producer.id });

updatePeers();
} catch (e) {
console.error(e);
res.send({ error: e.message });
}
});

Expand Down
Loading

0 comments on commit 91dda48

Please sign in to comment.