@open-data-v/data
Version:
OpenDataV 数据处理基础组件包
1 lines • 4.45 kB
Source Map (JSON)
{"version":3,"file":"handler.umd.cjs","sources":["../../src/websocket/handler.ts"],"sourcesContent":["import type { DataAcceptor, DataInstance, Response } from '@open-data-v/base'\nimport { cloneDeep } from 'lodash-es'\n\nimport type { WebSocketInstance } from '../hooks'\nimport { useWebsocket } from '../hooks'\nimport { dataLogger } from '../utils'\nimport type { WebsocketOption } from './type'\n\nclass WebsocketData implements DataInstance {\n public options?: WebsocketOption\n public wsInstance?: WebSocket\n public timer: IntervalHandle = 0\n public acceptor?: DataAcceptor\n private retryCount = 0\n private connector: WebSocketInstance\n private debugAcceptor?: DataAcceptor\n\n constructor(options?: WebsocketOption, connector?: WebSocketInstance) {\n this.options = options\n this.connector = connector || useWebsocket()\n }\n public close() {\n this.wsInstance?.close()\n clearInterval(this.timer)\n }\n\n private ping() {\n const timeout = this.options?.timeout || 3000\n const handler = () => {\n this.wsInstance?.send('ping')\n }\n this.timer = setInterval(handler, timeout)\n }\n\n public send(message: string) {\n this.wsInstance?.send(message)\n }\n public async connect(acceptor: DataAcceptor) {\n this.acceptor = acceptor\n await this.wsconnect()\n }\n\n private async wsconnect() {\n if (!this.options) {\n return\n }\n this.wsInstance = new this.connector(this.options.url)\n this.wsInstance.addEventListener('open', () => {\n dataLogger.info('wsOpen')\n })\n const handlerData = (message) => {\n const response: Response = {\n status: 'FAILED',\n data: ''\n }\n try {\n const data = JSON.parse(message.data)\n response.data = data\n response.status = 'SUCCESS'\n } catch (err: any) {\n response.data = err.message ? err.message : err\n }\n\n if (this.acceptor) {\n this.acceptor(response)\n }\n if (this.debugAcceptor) {\n this.debugAcceptor(response)\n }\n }\n this.wsInstance.addEventListener('message', handlerData)\n this.wsInstance.addEventListener('error', (_err) => {\n dataLogger.error('ws.ts Error')\n if (!this.options!.isRetry) {\n return\n }\n if (this.options!.maxRetryCount < 0 || this.retryCount < this.options!.maxRetryCount) {\n this.reConnect()\n }\n })\n this.ping()\n }\n\n public reConnect() {\n this.close()\n this.wsconnect()\n this.retryCount++\n }\n\n public async debug(acceptor: DataAcceptor) {\n this.debugAcceptor = acceptor\n }\n\n public cancelDebug() {\n this.debugAcceptor = undefined\n }\n\n public toJSON() {\n return {\n options: cloneDeep(this.options),\n type: 'WS'\n }\n }\n}\n\nexport default WebsocketData\n"],"names":["WebsocketData","options","connector","__publicField","useWebsocket","_a","timeout","handler","message","acceptor","dataLogger","handlerData","response","data","err","_err","cloneDeep"],"mappings":"4WAQA,MAAMA,CAAsC,CAS1C,YAAYC,EAA2BC,EAA+B,CAR/DC,EAAA,gBACAA,EAAA,mBACAA,EAAA,aAAwB,GACxBA,EAAA,iBACCA,EAAA,kBAAa,GACbA,EAAA,kBACAA,EAAA,sBAGN,KAAK,QAAUF,EACV,KAAA,UAAYC,GAAaE,eAAa,CAAA,CAEtC,OAAQ,QACbC,EAAA,KAAK,aAAL,MAAAA,EAAiB,QACjB,cAAc,KAAK,KAAK,CAAA,CAGlB,MAAO,OACP,MAAAC,IAAUD,EAAA,KAAK,UAAL,YAAAA,EAAc,UAAW,IACnCE,EAAU,IAAM,QACfF,EAAA,KAAA,aAAA,MAAAA,EAAY,KAAK,OACxB,EACK,KAAA,MAAQ,YAAYE,EAASD,CAAO,CAAA,CAGpC,KAAKE,EAAiB,QACtBH,EAAA,KAAA,aAAA,MAAAA,EAAY,KAAKG,EAAO,CAE/B,MAAa,QAAQC,EAAwB,CAC3C,KAAK,SAAWA,EAChB,MAAM,KAAK,UAAU,CAAA,CAGvB,MAAc,WAAY,CACpB,GAAA,CAAC,KAAK,QACR,OAEF,KAAK,WAAa,IAAI,KAAK,UAAU,KAAK,QAAQ,GAAG,EAChD,KAAA,WAAW,iBAAiB,OAAQ,IAAM,CAC7CC,EAAA,WAAW,KAAK,QAAQ,CAAA,CACzB,EACK,MAAAC,EAAeH,GAAY,CAC/B,MAAMI,EAAqB,CACzB,OAAQ,SACR,KAAM,EACR,EACI,GAAA,CACF,MAAMC,EAAO,KAAK,MAAML,EAAQ,IAAI,EACpCI,EAAS,KAAOC,EAChBD,EAAS,OAAS,gBACXE,EAAU,CACjBF,EAAS,KAAOE,EAAI,QAAUA,EAAI,QAAUA,CAAA,CAG1C,KAAK,UACP,KAAK,SAASF,CAAQ,EAEpB,KAAK,eACP,KAAK,cAAcA,CAAQ,CAE/B,EACK,KAAA,WAAW,iBAAiB,UAAWD,CAAW,EACvD,KAAK,WAAW,iBAAiB,QAAUI,GAAS,CAClDL,EAAA,WAAW,MAAM,aAAa,EACzB,KAAK,QAAS,UAGf,KAAK,QAAS,cAAgB,GAAK,KAAK,WAAa,KAAK,QAAS,gBACrE,KAAK,UAAU,CACjB,CACD,EACD,KAAK,KAAK,CAAA,CAGL,WAAY,CACjB,KAAK,MAAM,EACX,KAAK,UAAU,EACV,KAAA,YAAA,CAGP,MAAa,MAAMD,EAAwB,CACzC,KAAK,cAAgBA,CAAA,CAGhB,aAAc,CACnB,KAAK,cAAgB,MAAA,CAGhB,QAAS,CACP,MAAA,CACL,QAASO,EAAAA,UAAU,KAAK,OAAO,EAC/B,KAAM,IACR,CAAA,CAEJ"}