snapdrop

A Progressive Web App for local file sharing
git clone http://git.hanabi.in/repos/snapdrop.git
Log | Files | Refs | README | LICENSE

commit 00aa38564c6660ba699c0476fdf9568625ec4937
parent 3b4784e8eb49959deb4277e0b52db47677f7c56d
Author: Robin Linus <robin_woll@capira.de>
Date:   Thu, 31 Dec 2015 00:42:53 +0100

Keep connections alive

Diffstat:
Mapp/elements/p2p-network/p2p-network.html | 82+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mapp/elements/p2p-network/web-socket.html | 92++++++++++++++++++++++++++++++++++---------------------------------------------
2 files changed, 80 insertions(+), 94 deletions(-)

diff --git a/app/elements/p2p-network/p2p-network.html b/app/elements/p2p-network/p2p-network.html @@ -23,49 +23,47 @@ }.bind(this); }, initialize: function() { - if (window.isActive) { - clearInterval(this.reconnectTimer); - this.reconnectTimer = undefined; - var options; - if (window.debug) { - options = { - host: window.location.hostname, - port: 3002, - path: 'peerjs' - }; - } else { - options = { - host: 'snapdrop.net', - port: 443, - path: 'peerjs', - secure: true - }; - } - this._peer = new Peer(this.me, options); - this._peer.on('open', function(id) { - console.log('My peer ID is: ' + id); - this.set('me', id); - this._peerOpen = true; - this._initCallbacks.forEach(function(cb) { - cb(); - }); - }.bind(this)); - - this._peer.on('connection', this.connect.bind(this)); - this._peer.on('error', function(err) { - console.error(err); - //ugly hack to find out error type - if (err.message.indexOf('Could not connect to peer') > -1) { - delete this._connectedPeers[this.peer]; - return; - } - if (err.message.indexOf('Lost connection to server') > -1) { - this._peer.destroy(); - this._reconnect(); - return; - } - }.bind(this)); + clearInterval(this.reconnectTimer); + this.reconnectTimer = undefined; + var options; + if (window.debug) { + options = { + host: window.location.hostname, + port: 3002, + path: 'peerjs' + }; + } else { + options = { + host: 'snapdrop.net', + port: 443, + path: 'peerjs', + secure: true + }; } + this._peer = new Peer(this.me, options); + this._peer.on('open', function(id) { + console.log('My peer ID is: ' + id); + this.set('me', id); + this._peerOpen = true; + this._initCallbacks.forEach(function(cb) { + cb(); + }); + }.bind(this)); + + this._peer.on('connection', this.connect.bind(this)); + this._peer.on('error', function(err) { + console.error(err); + //ugly hack to find out error type + if (err.message.indexOf('Could not connect to peer') > -1) { + delete this._connectedPeers[this.peer]; + return; + } + if (err.message.indexOf('Lost connection to server') > -1) { + this._peer.destroy(); + this._reconnect(); + return; + } + }.bind(this)); }, connect: function(c) { diff --git a/app/elements/p2p-network/web-socket.html b/app/elements/p2p-network/web-socket.html @@ -9,68 +9,56 @@ </template> <script> 'use strict'; - window.isActive = true; - - window.onfocus = function() { - window.isActive = true; - }; - - window.onblur = function() { - window.isActive = false; - }; - Polymer({ is: 'web-socket', attached: function() { this.init(); }, init: function() { - if (window.isActive) { - clearInterval(this.reconnectTimer); - this.reconnectTimer = undefined; - var websocketUrl = (window.debug ? 'ws://' + window.location.hostname + ':3002' : 'wss://snapdrop.net') + '/binary'; - this.client = new BinaryClient(websocketUrl); - this.client.on('stream', function(stream, meta) { - // collect stream data - var parts = []; - stream.on('data', function(data) { - //console.log('part received', meta, data); - if (data.isSystemEvent) { - if (meta) { - data.from = meta.from; - } - this.fire('system-event', data); - } else { - parts.push(data); + clearInterval(this.reconnectTimer); + this.reconnectTimer = undefined; + var websocketUrl = (window.debug ? 'ws://' + window.location.hostname + ':3002' : 'wss://snapdrop.net') + '/binary'; + this.client = new BinaryClient(websocketUrl); + this.client.on('stream', function(stream, meta) { + // collect stream data + var parts = []; + stream.on('data', function(data) { + //console.log('part received', meta, data); + if (data.isSystemEvent) { + if (meta) { + data.from = meta.from; } - }.bind(this)); - // when finished, set it as the background image - stream.on('end', function() { - var blob = new Blob(parts, { - type: meta.type - }); - console.log('file received', blob, meta); - this.fire('file-received', { - blob: blob, - name: meta.name, - from: meta.from - }); - }.bind(this)); + this.fire('system-event', data); + } else { + parts.push(data); + } }.bind(this)); - this.client.on('open', function(e) { - console.log(e); - this.client.send({}, { - serverMsg: 'rtc-support', - rtc: window.webRTCSupported + // when finished, set it as the background image + stream.on('end', function() { + var blob = new Blob(parts, { + type: meta.type + }); + console.log('file received', blob, meta); + this.fire('file-received', { + blob: blob, + name: meta.name, + from: meta.from }); }.bind(this)); - this.client.on('error', function(e) { - this._reconnect(e); - }.bind(this)); - this.client.on('close', function(e) { - this._reconnect(e); - }.bind(this)); - } + }.bind(this)); + this.client.on('open', function(e) { + console.log(e); + this.client.send({}, { + serverMsg: 'rtc-support', + rtc: window.webRTCSupported + }); + }.bind(this)); + this.client.on('error', function(e) { + this._reconnect(e); + }.bind(this)); + this.client.on('close', function(e) { + this._reconnect(e); + }.bind(this)); }, _sendFile: function(toPeer, file) { console.log('send file via WebSocket', file);