myprint-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 10.1 kB
Source Map (JSON)
{"version":3,"file":"socket.mjs","sources":["../../../../src/stores/socket.ts"],"sourcesContent":["import { defineStore } from 'pinia';\nimport { printCssStyle } from '@myprint/design/utils/utils';\nimport { useConfigStore } from './config';\nimport { ClientCmd, ClientResult, Printer } from '@myprint/design/types/entity';\n\nlet lockReconnect: any;\nexport const useSocket = defineStore('myPrintSocket', {\n state: () => {\n return {\n socket: undefined as any,\n timer: undefined as any,\n connect: false,\n printerList: [] as Printer[],\n resolveMap: {}\n };\n },\n actions: {\n INIT_SOCKET() {\n // console.log(onSocketMessage)\n // console.log('初始化INIT_SOCKET')\n let stateThis = this;\n const reconnect = () => {\n if (lockReconnect) return;\n lockReconnect = true;\n // clearTimeout(timer);\n stateThis.timer = setTimeout(() => {\n createSocket();\n lockReconnect = false;\n }, 4000);\n };\n const onMessage = (msgData: ClientResult) => {\n // 遍历onMessage集合并触发\n if (this.resolveMap[msgData.taskId]) {\n this.resolveMap[msgData.taskId](msgData);\n delete this.resolveMap[msgData.taskId];\n }\n };\n\n const init = () => {\n this.socket!.onopen = function(_event: any) {\n // console.log('WebSocket:已连接');\n //心跳检测重置\n stateThis.connect = true;\n // app.SET_CLIENT_CONNECT(true)\n heartCheck.reset().start();\n // 发送css样式过去\n stateThis.socket!.send(JSON.stringify({\n options: { css: printCssStyle() },\n cmd: 'text/css'\n } as ClientCmd));\n };\n\n //接收到消息的回调方法\n this.socket!.onmessage = function(event: any) {\n const clientResult = JSON.parse(event.data) as ClientResult;\n switch (clientResult.cmd) {\n case 'printerList':\n stateThis.printerList = (clientResult.data as any[]).map(res => (res));\n onMessage(clientResult);\n break;\n case 'printResult':\n onMessage(clientResult);\n break;\n case 'generatePdfResult':\n onMessage(clientResult);\n break;\n case 'pong':\n break;\n }\n heartCheck.reset().start();\n };\n\n //连接发生错误的回调方法\n this.socket!.onerror = function(_event: any) {\n // console.log(\"WebSocket:发生错误\");\n stateThis.connect = false;\n // app.SET_CLIENT_CONNECT(false)\n reconnect();\n };\n\n //连接关闭的回调方法\n this.socket!.onclose = function(_event: any) {\n // console.log(\"WebSocket:已关闭\");\n heartCheck.reset();//心跳检测\n stateThis.connect = false;\n // app.SET_CLIENT_CONNECT(false)\n reconnect();\n };\n\n //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。\n window.onbeforeunload = function() {\n // app.SET_CLIENT_CONNECT(false)\n stateThis.connect = false;\n stateThis.socket!.close();\n };\n };\n\n const createSocket = () => {\n try {\n // console.log(this)\n // console.log(stateThis)\n stateThis.socket = new WebSocket(useConfigStore().clientUrl.replace('https', 'ws').replace('http', 'ws'));\n init();\n } catch (e) {\n reconnect();\n }\n };\n\n const heartCheck = {\n timeout: 5000,\n timeoutObj: setTimeout(() => {\n }),\n serverTimeoutObj: setInterval(() => {\n }),\n reset: function() {\n clearTimeout(this.timeoutObj);\n clearTimeout(this.serverTimeoutObj);\n return this;\n },\n start: function() {\n const self = this;\n clearTimeout(this.timeoutObj);\n clearTimeout(this.serverTimeoutObj);\n this.timeoutObj = setTimeout(function() {\n //这里发送一个心跳,后端收到后,返回一个心跳消息,\n //onmessage拿到返回的心跳就说明连接正常\n stateThis.socket!.send(JSON.stringify({\n 'cmd': 'ping'\n }));\n // console.log('ping');\n self.serverTimeoutObj = setTimeout(function() { // 如果超过一定时间还没重置,说明后端主动断开了\n // console.log('关闭服务');\n stateThis.socket!.close();//如果onclose会执行reconnect,我们执行 websocket.close()就行了.如果直接执行 reconnect 会触发onclose导致重连两次\n }, self.timeout);\n }, this.timeout);\n }\n };\n\n createSocket();\n },\n SET_PRINTER_LIST(list: Printer[]) {\n this.printerList = list;\n },\n SEND(taskId: string, msg: any) {\n return new Promise<ClientResult>((resolve, _reject) => {\n this.resolveMap[taskId] = resolve;\n this.socket!.send(msg);\n });\n }\n }\n});\n"],"names":[],"mappings":"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"}