From bd8e7a67f6862a2fd47963602bad68085159ee1e Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Mon, 4 Apr 2016 18:22:21 -0400 Subject: [PATCH] Refactor call initialization --- src/client/browser/video.js | 15 +++++++++ src/client/call.js | 49 +++++++++++++++++++++++++++ src/client/index.js | 59 +++------------------------------ src/client/peer/handshake.js | 2 +- src/client/store/callIdStore.js | 5 +++ src/server/app.js | 2 +- 6 files changed, 75 insertions(+), 57 deletions(-) create mode 100644 src/client/browser/video.js create mode 100644 src/client/call.js create mode 100644 src/client/store/callIdStore.js diff --git a/src/client/browser/video.js b/src/client/browser/video.js new file mode 100644 index 0000000..a0f675c --- /dev/null +++ b/src/client/browser/video.js @@ -0,0 +1,15 @@ +const debug = require('debug')('peer-calls:video'); + +function play() { + let videos = window.document.querySelectorAll('video'); + Array.prototype.forEach.call(videos, (video, index) => { + debug('playing video: %s', index); + try { + video.play(); + } catch (e) { + debug('error playing video: %s', e.name); + } + }); +} + +module.exports = { play }; diff --git a/src/client/call.js b/src/client/call.js new file mode 100644 index 0000000..1451ede --- /dev/null +++ b/src/client/call.js @@ -0,0 +1,49 @@ +const debug = require('debug')('peer-calls:call'); +const dispatcher = require('./dispatcher/dispatcher.js'); +const getUserMedia = require('./browser/getUserMedia.js'); +const play = require('./browser/video.js').play; +const notify = require('./action/notify.js'); +const handshake = require('./peer/handshake.js'); +const socket = require('./socket.js'); + +dispatcher.register(action => { + if (action.type === 'play') play(); +}); + +function init() { + const callId = window.document.getElementById('callId').value; + + getUserMedia({ video: true, audio: false }) + .then(stream => { + dispatcher.dispatch({ + type: 'add-stream', + userId: '_me_', + 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/index.js b/src/client/index.js index 49fc397..7742e77 100644 --- a/src/client/index.js +++ b/src/client/index.js @@ -1,7 +1,4 @@ 'use strict'; -if (window.localStorage && !window.localStorage.debug) { - window.localStorage.debug = 'peer-calls:*'; -} window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = {}; const App = require('./components/app.js'); @@ -9,36 +6,18 @@ const React = require('react'); const ReactDom = require('react-dom'); const activeStore = require('./store/activeStore.js'); const alertStore = require('./store/alertStore.js'); +const call = require('./call.js'); const debug = require('debug')('peer-calls:index'); -const dispatcher = require('./dispatcher/dispatcher.js'); -const getUserMedia = require('./browser/getUserMedia.js'); -const handshake = require('./peer/handshake.js'); const notificationsStore = require('./store/notificationsStore.js'); -const notify = require('./action/notify.js'); -const socket = require('./socket.js'); +const play = require('./browser/video.js').play; const streamStore = require('./store/streamStore.js'); -function play() { - let videos = window.document.querySelectorAll('video'); - Array.prototype.forEach.call(videos, (video, index) => { - debug('playing video: %s', index); - try { - video.play(); - } catch (e) { - debug('error playing video: %s', e.name); - } - }); -} - function render() { + debug('rendering'); ReactDom.render(, document.querySelector('#container')); play(); } -dispatcher.register(action => { - if (action.type === 'play') play(); -}); - activeStore.addListener(render); alertStore.addListener(render); notificationsStore.addListener(render); @@ -46,34 +25,4 @@ streamStore.addListener(render); render(); -const callId = window.document.getElementById('callId').value; - -getUserMedia({ video: true, audio: false }) -.then(stream => { - dispatcher.dispatch({ - type: 'add-stream', - userId: '_me_', - 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'); -}); +call.init(); diff --git a/src/client/peer/handshake.js b/src/client/peer/handshake.js index 714431d..d49be8f 100644 --- a/src/client/peer/handshake.js +++ b/src/client/peer/handshake.js @@ -10,7 +10,7 @@ function init(socket, roomName, stream) { function createPeer(user, initiator) { debug('create peer: %s', user.id); - notify.warn('Initializing new peer connection'); + notify.warn('Connecting to peer...'); let peer = peers[user.id] = Peer.init({ initiator: '/#' + socket.id === initiator, diff --git a/src/client/store/callIdStore.js b/src/client/store/callIdStore.js new file mode 100644 index 0000000..8944b68 --- /dev/null +++ b/src/client/store/callIdStore.js @@ -0,0 +1,5 @@ +function getCallId() { + return window.document.getElementById('callId').value; +} + +module.exports = { getCallId }; diff --git a/src/server/app.js b/src/server/app.js index e2165d6..d559c52 100644 --- a/src/server/app.js +++ b/src/server/app.js @@ -41,7 +41,7 @@ app.get('/call/', (req, res) => { }); app.get('/call/:callId', (req, res) => { res.render('call', { - callId: req.params.callId + callId: encodeURIComponent(req.params.callId) }); });