123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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);
- // };
- // }
- let timeInterval = 1
- let quitBool = false
- 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);
- if (quitBool) return
- if (timeInterval > 7) return self.postMessage('close');
- timeInterval++
- doConnect()
- // if (errorTime > 1000) {
- // self.postMessage('close');
- // return
- // }
- // throttle(doConnect, 100)();
- };
- 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) {
- switch (e.data) {
- case 'close':
- clearInterval(intervaler)
- ws.close()
- break;
- case 'endRequest':
- quitBool = false
- break;
- default:
- ws.send(e.data);
- break;
- }
- },
- 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;
- }
|