123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <link rel="import" href="binaryjs.html">
- <dom-module id="web-socket">
- <template>
- <style>
- :host {
- display: block;
- }
- </style>
- </template>
- <script>
- 'use strict';
- Polymer({
- is: 'web-socket',
- attached: function() {
- this.init();
- },
- init: function() {
- 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);
- }
- }.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));
- }.bind(this));
- this.client.on('open', function(e) {
- this.cancelAsync(this.reconnectTimer);
- 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);
- this.client.send(file.file, {
- name: file.file.name,
- type: file.file.type,
- toPeer: toPeer
- });
- },
- connectToPeer: function(peer, callback) {
- callback();
- },
- _sendSystemEvent: function(toPeer, event) {
- console.log('system event', toPeer, event);
- event.isSystemEvent = true;
- this.client.send(event, {
- toPeer: toPeer
- });
- },
- _reconnect: function(e) {
- console.log('disconnected', e);
- //try to reconnect after 3s
- this.reconnectTimer = this.async(this.init, 3000);
- }
- });
- </script>
- </dom-module>
|