12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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;
- errorTime += delay;
- return () => {
- if (!flag) return;
- flag = false;
- 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();
- clearInterval(intervaler);
- throttle(doConnect, 100);
- if (errorTime > 1000) {
- self.postMessage('close');
- }
- }
- ws.addEventListener('open', function (event) {
- var verifyBuffer = VerifyCode('RK3923C1201900139', cardToken);
- ws.send(verifyBuffer);
- });
- 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 === '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;
- }
|