connection-wrapper.html 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <link rel="import" href="p2p-network.html">
  2. <link rel="import" href="web-socket.html">
  3. <dom-module id="connection-wrapper">
  4. <template>
  5. <p2p-network id="p2p" me="{{me}}"></p2p-network>
  6. <web-socket id="ws" me="{{me}}"></web-socket>
  7. </template>
  8. <script>
  9. 'use strict';
  10. (function() {
  11. window.webRTCSupported = !!(window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.webkitRTCPeerConnection);
  12. function rtcConnectionSupported(peerId) {
  13. return window.webRTCSupported && (peerId.indexOf('rtc_') === 0);
  14. }
  15. Polymer({
  16. is: 'connection-wrapper',
  17. properties: {
  18. me: {
  19. notify: true
  20. },
  21. },
  22. behaviors: [Chat.FileTransferProtocol],
  23. _sendFile: function(toPeer, file) {
  24. if (!rtcConnectionSupported(toPeer)) {
  25. this.$.ws._sendFile(toPeer, file);
  26. } else {
  27. this.$.p2p._sendFile(toPeer, file);
  28. }
  29. },
  30. _sendSystemEvent: function(toPeer, event) {
  31. console.log('system event', toPeer, event);
  32. if (!rtcConnectionSupported(toPeer)) {
  33. this.$.ws._sendSystemEvent(toPeer, event);
  34. } else {
  35. this.$.p2p._sendSystemEvent(toPeer, event);
  36. }
  37. },
  38. connectToPeer: function(toPeer, callback) {
  39. if (!rtcConnectionSupported(toPeer)) {
  40. callback();
  41. } else {
  42. this.$.p2p.connectToPeer(toPeer, callback);
  43. }
  44. },
  45. _onHandshake: function(event) {
  46. var me = event.uuid;
  47. this.set('me', me);
  48. if (window.webRTCSupported) {
  49. this.$.p2p.initialize();
  50. }
  51. }
  52. });
  53. })();
  54. </script>
  55. </dom-module>