commit 00aa38564c6660ba699c0476fdf9568625ec4937
parent 3b4784e8eb49959deb4277e0b52db47677f7c56d
Author: Robin Linus <robin_woll@capira.de>
Date: Thu, 31 Dec 2015 00:42:53 +0100
Keep connections alive
Diffstat:
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);