From 3b95107bbc4d2c56758706bed29d00b0bb13a573 Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Sun, 24 Apr 2016 10:37:30 -0400 Subject: [PATCH] Make it work on Firefox --- src/client/call.js | 46 +++++++++++++++++++++------------------ src/client/peer/peers.js | 4 ---- src/server/app.js | 2 -- src/server/routes/call.js | 2 +- src/views/index.jade | 2 +- 5 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/client/call.js b/src/client/call.js index 1451ede..67c5940 100644 --- a/src/client/call.js +++ b/src/client/call.js @@ -1,3 +1,4 @@ +const Promise = require('bluebird'); const debug = require('debug')('peer-calls:call'); const dispatcher = require('./dispatcher/dispatcher.js'); const getUserMedia = require('./browser/getUserMedia.js'); @@ -13,37 +14,40 @@ dispatcher.register(action => { function init() { const callId = window.document.getElementById('callId').value; - getUserMedia({ video: true, audio: false }) + Promise.all([connect(), getCameraStream()]) + .spread((_socket, stream) => { + debug('initializing peer connection'); + handshake.init(_socket, callId, stream); + }); +} + +function connect() { + return new Promise(resolve => { + socket.once('connect', () => { + notify.warn('Connected to server socket'); + debug('socket connected'); + resolve(socket); + }); + socket.on('disconnect', () => { + notify.error('Server socket disconnected'); + }); + }); +} + +function getCameraStream() { + return getUserMedia({ video: true, audio: false }) .then(stream => { + debug('got our media stream:', stream); dispatcher.dispatch({ type: 'add-stream', userId: '_me_', stream }); + return stream; }) .catch(() => { notify.alert('Could not get access to microphone & camera'); }); - - socket.once('connect', () => { - notify.warn('Connected to server socket'); - debug('socket connected'); - - getUserMedia({ video: true, audio: true }) - .then(stream => { - debug('forwarding stream to handshake'); - handshake.init(socket, callId, stream); - }) - .catch(err => { - notify.alert('Could not get access to camera!', true); - debug('error getting media: %s %s', err.name, err.message); - }); - }); - - socket.on('disconnect', () => { - notify.error('Server socket disconnected'); - }); - } module.exports = { init }; diff --git a/src/client/peer/peers.js b/src/client/peer/peers.js index 5671235..c7d1f32 100644 --- a/src/client/peer/peers.js +++ b/src/client/peer/peers.js @@ -29,10 +29,6 @@ function create({ socket, user, initiator, stream }) { iceServers: [{ url: 'stun:23.21.150.121', urls: 'stun:23.21.150.121' - }, { - url: 'turn:numb.viagenie.ca', - credential: 'muazkh', - username: 'webrtc@live.com' }] } }); diff --git a/src/server/app.js b/src/server/app.js index fc9470b..0639265 100644 --- a/src/server/app.js +++ b/src/server/app.js @@ -40,8 +40,6 @@ if (__dirname.indexOf('/dist/') >= 0 || __dirname.indexOf('\\dist\\') >= 0) { app.use('/call', callRouter); app.use('/', siteRouter); - - io.on('connection', socket => handleSocket(socket, io)); module.exports = { http, app }; diff --git a/src/server/routes/call.js b/src/server/routes/call.js index cb5b763..7ac9175 100644 --- a/src/server/routes/call.js +++ b/src/server/routes/call.js @@ -10,7 +10,7 @@ router.use((req, res, next) => { router.get('/', (req, res) => { let prefix = 'call/'; - if (req.url.charAt(req.url.length - 1) === '/') prefix = ''; + if (req.url.charAt(req.originalUrl.length - 1) === '/') prefix = ''; res.redirect(prefix + uuid.v4()); }); diff --git a/src/views/index.jade b/src/views/index.jade index 38ef396..43a1344 100644 --- a/src/views/index.jade +++ b/src/views/index.jade @@ -16,7 +16,7 @@ html div#container - form#form(method="get" action="call") + form#form(method="get" action="call/") h1 img(src="res/peer-calls.svg" width="100%" alt="Peer Calls") p Group peer-to-peer calls for everyone. Create a private room. Share the link.