Prechádzať zdrojové kódy

Keep connections alive

Robin Linus 9 rokov pred
rodič
commit
00aa38564c

+ 40 - 42
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) {

+ 40 - 52
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);