websocket.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. self.importScripts("helper.js");
  2. var parameters = GetRequest();
  3. var ip = parameters["ip"];
  4. var appletPushAddress = parameters["appletPushAddress"];
  5. var cardToken = parameters["cardToken"];
  6. cardToken = cardToken && cardToken.replace(/@/g,"=");
  7. var isWSS = true;
  8. var errorTime = 0;
  9. var socketURL = isWSS ? "wss://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken : "ws://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken;
  10. doConnect();
  11. function throttle(fn, delay) {
  12. var flag = true;
  13. errorTime += delay;
  14. return () => {
  15. if (!flag) return;
  16. flag = false;
  17. timer = setTimeout(() => {
  18. fn();
  19. flag = true;
  20. }, delay);
  21. };
  22. }
  23. function doConnect() {
  24. var ws = new WebSocket(socketURL);
  25. ws.binaryType = 'arraybuffer';
  26. ws.onclose = function () {
  27. ws.close();
  28. throttle(doConnect, 100);
  29. if (errorTime > 1000) {
  30. self.postMessage('close');
  31. }
  32. }
  33. ws.onerror = function () {
  34. ws.close();
  35. throttle(doConnect, 100);
  36. if (errorTime > 1000) {
  37. self.postMessage('close');
  38. }
  39. }
  40. ws.addEventListener('open', function (event) {
  41. ws.send(ConfigChannel("RK3923C1201900139"));
  42. var checkBuffer = GetScreenState();
  43. ws.send(checkBuffer);
  44. });
  45. ws.addEventListener('message', function (event) {
  46. var input = new Uint8Array(event.data);
  47. ws.send('ping');
  48. if (input[0] == 0xff) {
  49. self.postMessage(input);
  50. } else {
  51. self.postMessage(input);
  52. }
  53. });
  54. self.addEventListener('message', function (e) {
  55. ws.send(e.data);
  56. ws.send('ping');
  57. }, false);
  58. }
  59. function GetRequest() {
  60. var url = location.search; // 获取url中"?"符后的字串
  61. var obj = new Object();
  62. if (url.indexOf("?") != -1) {
  63. var str = url.substr(1);
  64. strs = str.split("&");
  65. for (var i = 0; i < strs.length; i++) {
  66. obj[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
  67. }
  68. }
  69. return obj;
  70. }