proxy.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. function SocketClient () {
  2. this.list_elem = document.getElementById('client_list');
  3. this.info_div = document.getElementById('info_div');
  4. var self = this;
  5. }
  6. SocketClient.prototype.connect = function () {
  7. var self = this;
  8. this.list_elem.innerHTML = '';
  9. this.info_div.innerHTML = 'status: connecting...';
  10. this.socket = new WebSocket("ws://" + document.location.host + "/chat");
  11. this.socket.onopen = function () {self.onopen.apply(self, arguments);};
  12. this.socket.onmessage = function () {self.onmessage.apply(self, arguments);};
  13. this.socket.onclose = function () {self.onclose.apply(self, arguments);};
  14. };
  15. SocketClient.prototype.deviceAdded = function (params) {
  16. var el = document.createElement('li');
  17. el.innerHTML = '<a href="devtools/devtools.html?host=' + document.location.host + '&page=' + params.page + '">' + params.device_name + '</a>' + ' <span class="device_details">(' + params.app_id + ', ' + params.device_model + ', ' + params.device_id + ')</span>';
  18. this.list_elem.appendChild(el);
  19. this.visibleElems[params.connection_id] = el;
  20. };
  21. SocketClient.prototype.deviceRemoved = function (params) {
  22. var li = this.visibleElems[params.connection_id];
  23. li.parentNode.removeChild(li);
  24. };
  25. SocketClient.prototype.onopen = function () {
  26. this.info_div.innerHTML = 'status: connected to gateway';
  27. this.list_elem.innerHTML = '';
  28. this.visibleElems = {};
  29. console.log('connection to gateway opened');
  30. };
  31. SocketClient.prototype.onmessage = function (message) {
  32. var el = document.createElement('li');
  33. el.innerHTML = message.data;
  34. window.document.getElementById('history').appendChild(el);
  35. };
  36. SocketClient.prototype.onclose = function () {
  37. var retryInterval = 1000.0;
  38. console.log('connection closed, retrying in ' + (retryInterval/1000.0) + ' seconds');
  39. var self = this;
  40. window.setTimeout(function () {self.connect();}, retryInterval);
  41. };
  42. window.addEventListener('load', function () {
  43. var form = window.document.getElementById('msg_form');
  44. var msg_field = window.document.getElementById('msg_field');
  45. var socketClient = new SocketClient();
  46. socketClient.connect()
  47. form.onsubmit = function () {
  48. msg = msg_field.value;
  49. msg_field.value = '';
  50. socketClient.socket.send(msg);
  51. var el = document.createElement('li');
  52. el.innerHTML = msg;
  53. window.document.getElementById('history').appendChild(el);
  54. return false;
  55. };
  56. }
  57. );