websocket.js 1.6 KB

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