12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- var express = require('express');
- var fs = require('fs');
- var app = express.createServer();
- var io = require('socket.io').listen(app);
- // Initialize main server.
- app.use(express.bodyParser());
- app.use(express.static(__dirname + '/public'));
- app.set('view engine', 'ejs');
- app.set('views', __dirname + '/views');
- // P2P sources: { socket id => url }.
- sources = {};
- // socket.io clients.
- clients = {};
- // P2Ps. { source id => group members }
- connections = {};
- // For connecting clients:
- // Src will connect upon creating a link.
- // Receivers will connect after clicking a button and entering an optional key.
- io.sockets.on('connection', function(socket) {
- clients[socket.id] = socket;
- // Source connected.
- socket.on('source', function(fn) {
- fn({ 'id': socket.id });
- connections[socket.id] = [];
- });
- // Sink connected.
- socket.on('sink', function(msg, fn) {
- var source_id = msg.source;
- var sink_id = socket.id;
- var source = clients[source_id];
- if (!!source) {
- source.emit('sink-connected', { 'sink': sink_id });
- fn({ 'id': sink_id });
- } else {
- fn({ 'error': 'Source ID not found.' });
- };
- });
- // Offer from src to dest.
- socket.on('offer', function (msg) {
- console.log('OFFER MADE');
- sink = clients[msg.sink];
- sink.emit('offer', msg);
- });
- // Answer from dest to src.
- socket.on('answer', function (msg) {
- console.log('ANSWER MADE');
- source = clients[msg.source];
- // Add to list of successful connections.
- // May want to move this to another message soon.
- connections[msg.source].push(msg.sink);
- source.emit('answer', msg);
- });
- socket.on('disconnect', function() {
- // Handle on client side?
- socket.broadcast.to(connections[socket.id]).emit('Host disconnected');
- delete connections[socket.id];
- delete clients[socket.id];
- });
- socket.on('port', function(msg) {
- clients[msg.sink].emit('port', msg);
- });
- });
- app.get('/', function(req, res){
- res.render('index');
- });
- app.listen(process.env.PORT || 8000);
|