1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- self.importScripts('helper.js');
- var parameters = GetRequest();
- var cardToken = parameters['cardToken'];
- cardToken = cardToken && decodeURIComponent(cardToken);
- var errorTime = 0;
- var socketURL = decodeURIComponent(parameters['socketURL']);
- var intervaler;
- doConnect();
- function throttle(fn, delay) {
- var flag = true;
- return () => {
- if (!flag) return;
- flag = false;
- errorTime += delay;
- timer = setTimeout(() => {
- fn();
- flag = true;
- }, delay);
- };
- }
- function doConnect() {
- var ws = new WebSocket(socketURL);
- ws.binaryType = 'arraybuffer';
- intervaler = setInterval(() => {
- if (ws.readyState === 1) {
- ws.send('ping');
- } else {
- clearInterval(intervaler);
- self.postMessage('close');
- }
- }, 3000);
- ws.onerror = function () {
- // ws.close(1006);
- clearInterval(intervaler);
- throttle(doConnect, 100);
- if (errorTime > 1000) {
- self.postMessage('close');
- }
- };
- ws.addEventListener('close', function (e) {
- // if (e.code === 1006) {
- // clearInterval(intervaler);
- // throttle(doConnect, 100);
- // if (errorTime > 1000) {
- // self.postMessage('close');
- // }
- // }
- });
- ws.addEventListener('open', function (event) {
- var verifyBuffer = VerifyCode('RK3923C1201900139', cardToken);
- ws.send(verifyBuffer);
- errorTime = 0;
- });
- ws.addEventListener('message', function (event) {
- var input = new Uint8Array(event.data);
- if (input[0] == 0xff) {
- self.postMessage(input);
- } else {
- self.postMessage(input);
- }
- });
- self.addEventListener(
- 'message',
- function (e) {
- if (e.data === 'close') {
- clearInterval(intervaler);
- ws.close();
- } else {
- ws.send(e.data);
- }
- },
- false,
- );
- }
- function GetRequest() {
- var url = location.search; // 获取url中"?"符后的字串
- var obj = new Object();
- if (url.indexOf('?') != -1) {
- var str = url.substr(1);
- strs = str.split('&');
- for (var i = 0; i < strs.length; i++) {
- obj[strs[i].split('=')[0]] = strs[i].split('=')[1];
- }
- }
- return obj;
- }
|