openatc-components 0.0.80 → 0.0.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +18 -18
- package/.editorconfig +9 -9
- package/.eslintignore +5 -5
- package/.eslintrc.js +29 -29
- package/.postcssrc.js +10 -10
- package/README.md +30 -30
- package/build/build.js +41 -41
- package/build/check-versions.js +54 -54
- package/build/package.config.js +58 -58
- package/build/package.dev.config.js +107 -107
- package/build/package.prod.config.js +160 -160
- package/build/utils.js +101 -101
- package/build/vue-loader.conf.js +22 -22
- package/build/webpack.base.conf.js +114 -114
- package/build/webpack.dev.conf.js +95 -95
- package/build/webpack.prod.conf.js +149 -149
- package/config/dev.env.js +8 -8
- package/config/index.js +91 -91
- package/config/prod.env.js +5 -5
- package/config/test.env.js +7 -7
- package/index.html +12 -12
- package/package/kisscomps/components/BoardCard/BoardCard.vue +89 -89
- package/package/kisscomps/components/BoardCard/index.js +2 -2
- package/package/kisscomps/components/CommonKanban/CommonKanban.vue +118 -118
- package/package/kisscomps/components/CommonKanban/index.js +2 -2
- package/package/kisscomps/components/ExpendConfig/ExpendConfig.vue +114 -114
- package/package/kisscomps/components/ExpendConfig/index.js +2 -2
- package/package/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +170 -170
- package/package/kisscomps/components/FaultDetailModal/index.js +2 -2
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +497 -497
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +300 -300
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +288 -288
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +391 -391
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +336 -336
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +345 -345
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +389 -389
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1179 -1179
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +402 -402
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +361 -361
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +368 -368
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +475 -475
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +494 -494
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +401 -401
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +360 -360
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +367 -367
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +476 -476
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
- package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
- package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
- package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
- package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
- package/package/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
- package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +912 -912
- package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +112 -112
- package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +112 -112
- package/package/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +111 -111
- package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
- package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
- package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +99 -99
- package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +99 -99
- package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
- package/package/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +99 -99
- package/package/kisscomps/components/IntersectionMap/crossDirection/utils.js +78 -78
- package/package/kisscomps/components/IntersectionMap/index.js +2 -2
- package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +153 -153
- package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +518 -518
- package/package/kisscomps/components/IntersectionWithInterface/index.js +2 -2
- package/package/kisscomps/components/KanBan/index.js +2 -2
- package/package/kisscomps/components/KanBan/kanban.vue +219 -219
- package/package/kisscomps/components/OverLap/OverLap.vue +207 -207
- package/package/kisscomps/components/OverLap/index.js +2 -2
- package/package/kisscomps/components/PatternStatus/PatternStatus.vue +888 -886
- package/package/kisscomps/components/PatternStatus/index.js +2 -2
- package/package/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +424 -418
- package/package/kisscomps/components/PatternWalkSvg/index.js +2 -2
- package/package/kisscomps/components/PhaseMarker/index.js +6 -6
- package/package/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
- package/package/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
- package/package/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
- package/package/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
- package/package/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
- package/package/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
- package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +739 -739
- package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +195 -195
- package/package/kisscomps/components/SchemeConfig/index.js +2 -2
- package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +198 -198
- package/package/kisscomps/components/SchemeConfig/manualControlModal/index.vue +219 -219
- package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
- package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1384 -1384
- package/package/kisscomps/components/StageBord/StageBord.vue +242 -242
- package/package/kisscomps/components/StageBord/index.js +2 -2
- package/package/kisscomps/components/StageStatus/StageStatus.vue +306 -306
- package/package/kisscomps/components/StageStatus/index.js +2 -2
- package/package/kisscomps/components/Stages/index.vue +139 -139
- package/package/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
- package/package/kisscomps/components/SvgIcon/index.js +2 -2
- package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +522 -522
- package/package/kisscomps/components/XRDDirSelector/index.js +2 -2
- package/package/kisscomps/components/overView/index.vue +676 -676
- package/package/kisscomps/components/patternList/index.js +2 -2
- package/package/kisscomps/components/patternList/patternList.vue +562 -562
- package/package/kisscomps/index.js +92 -92
- package/package/kissui.min.js +1 -1
- package/package.json +1 -1
- package/src/App.vue +24 -24
- package/src/EdgeMgr/EdgeModelBase.js +16 -16
- package/src/EdgeMgr/controller/crossDiagramMgr.js +120 -120
- package/src/api/authapi.js +31 -31
- package/src/api/config.js +21 -21
- package/src/api/control.js +76 -76
- package/src/api/fault.js +66 -66
- package/src/api/index.js +24 -24
- package/src/api/login.js +46 -46
- package/src/api/optimize.js +72 -72
- package/src/api/param.js +154 -154
- package/src/api/passwdAssest.js +101 -101
- package/src/api/template.js +27 -27
- package/src/i18n/index.js +26 -26
- package/src/i18n/language/en.js +1111 -1111
- package/src/i18n/language/index.js +25 -25
- package/src/i18n/language/zh.js +1110 -1110
- package/src/icons/demo.css +539 -539
- package/src/icons/iconfont.css +835 -835
- package/src/icons/iconfont.json +1444 -1444
- package/src/icons/index.js +20 -20
- package/src/icons/svg/bendi.svg +110 -110
- package/src/icons/svg/bujin.svg +36 -36
- package/src/icons/svg/connectBlue.svg +7 -7
- package/src/icons/svg/currentvolume.svg +0 -0
- package/src/icons/svg/cutRed.svg +7 -7
- package/src/icons/svg/cycle.svg +0 -0
- package/src/icons/svg/dingzhouqi.svg +34 -34
- package/src/icons/svg/ganyingkongzhi.svg +30 -30
- package/src/icons/svg/guandeng.svg +81 -81
- package/src/icons/svg/huangshan.svg +71 -71
- package/src/icons/svg/maincontrol.svg +0 -0
- package/src/icons/svg/manualcontrolbackground.svg +51 -51
- package/src/icons/svg/manualcontrolbackground1.svg +62 -62
- package/src/icons/svg/manualcontrolbackgrounden.svg +62 -62
- package/src/icons/svg/model.svg +0 -0
- package/src/icons/svg/phasediff.svg +0 -0
- package/src/icons/svg/quanhong.svg +86 -86
- package/src/icons/svg/shanghe.svg +11 -11
- package/src/icons/svg/shoudong.svg +103 -103
- package/src/icons/svg/time.svg +0 -0
- package/src/icons/svg/wuxianlan.svg +46 -46
- package/src/icons/svg/xiala.svg +11 -11
- package/src/icons/svg/xingrenguojie.svg +33 -33
- package/src/icons/svg/xitong.svg +89 -89
- package/src/icons/svg/youxian.svg +41 -41
- package/src/icons/svg/zizhukongzhi.svg +43 -43
- package/src/kisscomps/components/BoardCard/BoardCard.vue +89 -89
- package/src/kisscomps/components/BoardCard/index.js +2 -2
- package/src/kisscomps/components/CommonKanban/CommonKanban.vue +118 -118
- package/src/kisscomps/components/CommonKanban/index.js +2 -2
- package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +114 -114
- package/src/kisscomps/components/ExpendConfig/index.js +2 -2
- package/src/kisscomps/components/FaultDetailModal/FaultDetailModal.vue +170 -170
- package/src/kisscomps/components/FaultDetailModal/index.js +2 -2
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CrossRoadsSvg.vue +497 -497
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/CustomRoadsSvg.vue +46 -46
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionEWSvg.vue +300 -300
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PedSectionSNSvg.vue +288 -288
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampEastSvg.vue +391 -391
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampNorthSvg.vue +336 -336
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampSouthSvg.vue +345 -345
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/RampWestSvg.vue +389 -389
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/SidewalkSvg.vue +1179 -1179
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeEastRoadsSvg.vue +402 -402
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeNorthRoadsSvg.vue +361 -361
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeSouthRoadsSvg.vue +368 -368
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/TShapeWestRoadsSvg.vue +475 -475
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LCrossRoadsSvg.vue +494 -494
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeEastRoadsSvg.vue +401 -401
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeNorthRoadsSvg.vue +360 -360
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeSouthRoadsSvg.vue +367 -367
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/leftroad/LTShapeWestRoadsSvg.vue +476 -476
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/refreshSvg.vue +63 -63
- package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/busMapSvg.vue +50 -50
- package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/eastBusSvg.vue +167 -167
- package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/northBusSvg.vue +168 -168
- package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/southBusSvg.vue +168 -168
- package/src/kisscomps/components/IntersectionMap/crossDirection/busIcon/westBusSvg.vue +169 -169
- package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +912 -912
- package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/LphaseIconSvg.vue +112 -112
- package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/phaseIconSvg.vue +112 -112
- package/src/kisscomps/components/IntersectionMap/crossDirection/phaseIcon/rampPhaseIconSvg.vue +111 -111
- package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.json +196 -196
- package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/busPos.left.json +196 -196
- package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.json +99 -99
- package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/phasePos.left.json +99 -99
- package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/rampPos.json +52 -52
- package/src/kisscomps/components/IntersectionMap/crossDirection/posJson/sidePos.json +99 -99
- package/src/kisscomps/components/IntersectionMap/crossDirection/utils.js +78 -78
- package/src/kisscomps/components/IntersectionMap/index.js +2 -2
- package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +153 -153
- package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +518 -518
- package/src/kisscomps/components/IntersectionWithInterface/index.js +2 -2
- package/src/kisscomps/components/KanBan/index.js +2 -2
- package/src/kisscomps/components/KanBan/kanban.vue +219 -219
- package/src/kisscomps/components/OverLap/OverLap.vue +207 -207
- package/src/kisscomps/components/OverLap/index.js +2 -2
- package/src/kisscomps/components/PatternStatus/PatternStatus.vue +888 -886
- package/src/kisscomps/components/PatternStatus/index.js +2 -2
- package/src/kisscomps/components/PatternWalkSvg/PatternWalkSvg.vue +424 -418
- package/src/kisscomps/components/PatternWalkSvg/index.js +2 -2
- package/src/kisscomps/components/PhaseMarker/index.js +6 -6
- package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -215
- package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -121
- package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -60
- package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -62
- package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -62
- package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -117
- package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +739 -739
- package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +195 -195
- package/src/kisscomps/components/SchemeConfig/index.js +2 -2
- package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +198 -198
- package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +219 -219
- package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +263 -263
- package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1384 -1384
- package/src/kisscomps/components/StageBord/StageBord.vue +242 -242
- package/src/kisscomps/components/StageBord/index.js +2 -2
- package/src/kisscomps/components/StageStatus/StageStatus.vue +306 -306
- package/src/kisscomps/components/StageStatus/index.js +2 -2
- package/src/kisscomps/components/Stages/index.vue +139 -139
- package/src/kisscomps/components/SvgIcon/SvgIcon.vue +53 -53
- package/src/kisscomps/components/SvgIcon/index.js +2 -2
- package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +522 -522
- package/src/kisscomps/components/XRDDirSelector/index.js +2 -2
- package/src/kisscomps/components/overView/index.vue +676 -676
- package/src/kisscomps/components/patternList/index.js +2 -2
- package/src/kisscomps/components/patternList/patternList.vue +562 -562
- package/src/kisscomps/index.js +92 -92
- package/src/lib/publicjs/ArryListUtil.js +38 -38
- package/src/lib/publicjs/HttpurlMgr.js +45 -45
- package/src/lib/publicjs/KissApi.js +158 -158
- package/src/lib/publicjs/KissWSSub/Heartcheck.js +128 -128
- package/src/lib/publicjs/KissWSSub/KissWsSub.js +91 -91
- package/src/lib/publicjs/KissWSSub/KissWsSubByType.js +152 -152
- package/src/lib/publicjs/KissWSSub/SimuWsSubByType.js +44 -44
- package/src/lib/publicjs/KissWSSub/Sub.js +51 -51
- package/src/lib/publicjs/KissWSSub/SubChannel.js +119 -119
- package/src/lib/publicjs/basecomponents.js +65 -65
- package/src/lib/publicjs/localStorage.js +112 -112
- package/src/lib/publicjs/objdeepcopy.js +32 -32
- package/src/lib/publicjs/pageScroll.js +30 -30
- package/src/lib/publicjs/passwdAssest.js +101 -101
- package/src/lib/publicjs/styleclassfactory.js +32 -32
- package/src/main.js +47 -47
- package/src/router/index.js +36 -36
- package/src/store/getters.js +16 -16
- package/src/store/index.js +26 -26
- package/src/store/modules/globalParam.js +27 -27
- package/src/utils/ControlFormat.js +68 -68
- package/src/utils/RingDataModel.js +180 -180
- package/src/utils/auth.js +111 -111
- package/src/utils/dateFormat.js +41 -41
- package/src/utils/errorcode.js +224 -224
- package/src/utils/fault.js +195 -195
- package/src/utils/faultcode.js +209 -209
- package/src/utils/index.js +69 -69
- package/src/utils/pedphasedesc.js +119 -119
- package/src/utils/phasedesc.js +124 -124
- package/src/utils/responseMessage.js +21 -21
- package/src/utils/validate.js +43 -43
- package/src/views/home.1.vue +479 -479
- package/src/views/home.vue +78 -78
- package/src/views/intersection.vue +276 -276
- package/src/views/overView.vue +41 -41
- package/src/views/schemeconfig.vue +154 -154
- package/static/apiconfig.json +336 -336
- package/static/styles/common.scss +19 -19
- package/static/styles/commonkanban.scss +87 -87
- package/static/styles/dark/index.scss +2 -2
- package/static/styles/dark/theme/element-dark.scss +42 -42
- package/static/styles/index.scss +84 -84
- package/static/styles/intersection.scss +170 -170
- package/static/styles/light/index.scss +2 -2
- package/static/styles/light/theme/element-light.scss +42 -42
- package/static/styles/overview.scss +371 -371
- package/static/styles/schemeconfig.scss +405 -405
- package/static/styles/stages.scss +64 -64
- package/static/token.json +2 -2
- package/test/e2e/custom-assertions/elementCount.js +27 -27
- package/test/e2e/nightwatch.conf.js +46 -46
- package/test/e2e/runner.js +48 -48
- package/test/e2e/specs/test.js +19 -19
- package/test/unit/.eslintrc +7 -7
- package/test/unit/jest.conf.js +30 -30
- package/test/unit/setup.js +3 -3
- package/test/unit/specs/HelloWorld.spec.js +11 -11
- package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PatternWalkSvg.vue +0 -429
- package/src/kisscomps/components/IntersectionMap/crossDirection/baseImg/PatternWalkSvg.vue +0 -429
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2020 kedacom
|
|
3
|
-
* OpenATC is licensed under Mulan PSL v2.
|
|
4
|
-
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
5
|
-
* You may obtain a copy of Mulan PSL v2 at:
|
|
6
|
-
* http://license.coscl.org.cn/MulanPSL2
|
|
7
|
-
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
8
|
-
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
9
|
-
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
10
|
-
* See the Mulan PSL v2 for more details.
|
|
11
|
-
**/
|
|
12
|
-
/**
|
|
13
|
-
* `WebsocketHeartbeatJs` constructor.
|
|
14
|
-
*
|
|
15
|
-
* @param {Object} opts
|
|
16
|
-
* {
|
|
17
|
-
* url websocket链接地址
|
|
18
|
-
* pingTimeout 未收到消息多少秒之后发送ping请求,默认15000毫秒
|
|
19
|
-
pongTimeout 发送ping之后,未收到消息超时时间,默认10000毫秒
|
|
20
|
-
reconnectTimeout
|
|
21
|
-
pingMsg
|
|
22
|
-
* }
|
|
23
|
-
* @api public
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
function WebsocketHeartbeatJs ({
|
|
27
|
-
url,
|
|
28
|
-
pingTimeout = 15000,
|
|
29
|
-
pongTimeout = 10000,
|
|
30
|
-
reconnectTimeout = 2000,
|
|
31
|
-
pingMsg = 'heartbeat'
|
|
32
|
-
}) {
|
|
33
|
-
this.opts = {
|
|
34
|
-
url: url,
|
|
35
|
-
pingTimeout: pingTimeout,
|
|
36
|
-
pongTimeout: pongTimeout,
|
|
37
|
-
reconnectTimeout: reconnectTimeout,
|
|
38
|
-
pingMsg: pingMsg
|
|
39
|
-
}
|
|
40
|
-
this.ws = null // websocket实例
|
|
41
|
-
|
|
42
|
-
// override hook function
|
|
43
|
-
this.onclose = () => {}
|
|
44
|
-
this.onerror = () => {}
|
|
45
|
-
this.onopen = () => {}
|
|
46
|
-
this.onmessage = () => {}
|
|
47
|
-
this.onreconnect = () => {}
|
|
48
|
-
|
|
49
|
-
this.createWebSocket()
|
|
50
|
-
}
|
|
51
|
-
WebsocketHeartbeatJs.prototype.createWebSocket = function () {
|
|
52
|
-
try {
|
|
53
|
-
this.ws = new WebSocket(this.opts.url)
|
|
54
|
-
this.initEventHandle()
|
|
55
|
-
} catch (e) {
|
|
56
|
-
this.reconnect()
|
|
57
|
-
throw e
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
WebsocketHeartbeatJs.prototype.initEventHandle = function () {
|
|
62
|
-
this.ws.onclose = () => {
|
|
63
|
-
this.onclose()
|
|
64
|
-
this.reconnect()
|
|
65
|
-
}
|
|
66
|
-
this.ws.onerror = () => {
|
|
67
|
-
this.onerror()
|
|
68
|
-
this.reconnect()
|
|
69
|
-
}
|
|
70
|
-
this.ws.onopen = () => {
|
|
71
|
-
this.onopen()
|
|
72
|
-
// 心跳检测重置
|
|
73
|
-
this.heartCheck()
|
|
74
|
-
}
|
|
75
|
-
this.ws.onmessage = (event) => {
|
|
76
|
-
this.onmessage(event)
|
|
77
|
-
// 如果获取到消息,心跳检测重置
|
|
78
|
-
// 拿到任何消息都说明当前连接是正常的
|
|
79
|
-
this.heartCheck()
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
WebsocketHeartbeatJs.prototype.reconnect = function () {
|
|
84
|
-
if (this.lockReconnect || this.forbidReconnect) return
|
|
85
|
-
this.lockReconnect = true
|
|
86
|
-
this.onreconnect()
|
|
87
|
-
// 没连接上会一直重连,设置延迟避免请求过多
|
|
88
|
-
setTimeout(() => {
|
|
89
|
-
this.createWebSocket()
|
|
90
|
-
this.lockReconnect = false
|
|
91
|
-
}, this.opts.reconnectTimeout)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
WebsocketHeartbeatJs.prototype.send = function (msg) {
|
|
95
|
-
this.ws.send(msg)
|
|
96
|
-
}
|
|
97
|
-
// 心跳检测
|
|
98
|
-
WebsocketHeartbeatJs.prototype.heartCheck = function () {
|
|
99
|
-
this.heartReset()
|
|
100
|
-
this.heartStart()
|
|
101
|
-
}
|
|
102
|
-
WebsocketHeartbeatJs.prototype.heartStart = function () {
|
|
103
|
-
if (this.forbidReconnect) return // 不再重连就不再执行心跳
|
|
104
|
-
this.pingTimeoutId = setTimeout(() => {
|
|
105
|
-
// 这里发送一个心跳,后端收到后,返回一个心跳消息,
|
|
106
|
-
// onmessage拿到返回的心跳就说明连接正常
|
|
107
|
-
this.ws.send(this.opts.pingMsg)
|
|
108
|
-
// 如果超过一定时间还没重置,说明后端主动断开了
|
|
109
|
-
this.pongTimeoutId = setTimeout(() => {
|
|
110
|
-
// 如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
|
|
111
|
-
this.ws.close()
|
|
112
|
-
}, this.opts.pongTimeout)
|
|
113
|
-
}, this.opts.pingTimeout)
|
|
114
|
-
}
|
|
115
|
-
WebsocketHeartbeatJs.prototype.heartReset = function () {
|
|
116
|
-
clearTimeout(this.pingTimeoutId)
|
|
117
|
-
clearTimeout(this.pongTimeoutId)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
WebsocketHeartbeatJs.prototype.close = function () {
|
|
121
|
-
// 如果手动关闭连接,不再重连
|
|
122
|
-
this.forbidReconnect = true
|
|
123
|
-
this.heartReset()
|
|
124
|
-
this.ws.close()
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (window) window.WebsocketHeartbeatJs = WebsocketHeartbeatJs
|
|
128
|
-
export default WebsocketHeartbeatJs
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020 kedacom
|
|
3
|
+
* OpenATC is licensed under Mulan PSL v2.
|
|
4
|
+
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
5
|
+
* You may obtain a copy of Mulan PSL v2 at:
|
|
6
|
+
* http://license.coscl.org.cn/MulanPSL2
|
|
7
|
+
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
8
|
+
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
9
|
+
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
10
|
+
* See the Mulan PSL v2 for more details.
|
|
11
|
+
**/
|
|
12
|
+
/**
|
|
13
|
+
* `WebsocketHeartbeatJs` constructor.
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} opts
|
|
16
|
+
* {
|
|
17
|
+
* url websocket链接地址
|
|
18
|
+
* pingTimeout 未收到消息多少秒之后发送ping请求,默认15000毫秒
|
|
19
|
+
pongTimeout 发送ping之后,未收到消息超时时间,默认10000毫秒
|
|
20
|
+
reconnectTimeout
|
|
21
|
+
pingMsg
|
|
22
|
+
* }
|
|
23
|
+
* @api public
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
function WebsocketHeartbeatJs ({
|
|
27
|
+
url,
|
|
28
|
+
pingTimeout = 15000,
|
|
29
|
+
pongTimeout = 10000,
|
|
30
|
+
reconnectTimeout = 2000,
|
|
31
|
+
pingMsg = 'heartbeat'
|
|
32
|
+
}) {
|
|
33
|
+
this.opts = {
|
|
34
|
+
url: url,
|
|
35
|
+
pingTimeout: pingTimeout,
|
|
36
|
+
pongTimeout: pongTimeout,
|
|
37
|
+
reconnectTimeout: reconnectTimeout,
|
|
38
|
+
pingMsg: pingMsg
|
|
39
|
+
}
|
|
40
|
+
this.ws = null // websocket实例
|
|
41
|
+
|
|
42
|
+
// override hook function
|
|
43
|
+
this.onclose = () => {}
|
|
44
|
+
this.onerror = () => {}
|
|
45
|
+
this.onopen = () => {}
|
|
46
|
+
this.onmessage = () => {}
|
|
47
|
+
this.onreconnect = () => {}
|
|
48
|
+
|
|
49
|
+
this.createWebSocket()
|
|
50
|
+
}
|
|
51
|
+
WebsocketHeartbeatJs.prototype.createWebSocket = function () {
|
|
52
|
+
try {
|
|
53
|
+
this.ws = new WebSocket(this.opts.url)
|
|
54
|
+
this.initEventHandle()
|
|
55
|
+
} catch (e) {
|
|
56
|
+
this.reconnect()
|
|
57
|
+
throw e
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
WebsocketHeartbeatJs.prototype.initEventHandle = function () {
|
|
62
|
+
this.ws.onclose = () => {
|
|
63
|
+
this.onclose()
|
|
64
|
+
this.reconnect()
|
|
65
|
+
}
|
|
66
|
+
this.ws.onerror = () => {
|
|
67
|
+
this.onerror()
|
|
68
|
+
this.reconnect()
|
|
69
|
+
}
|
|
70
|
+
this.ws.onopen = () => {
|
|
71
|
+
this.onopen()
|
|
72
|
+
// 心跳检测重置
|
|
73
|
+
this.heartCheck()
|
|
74
|
+
}
|
|
75
|
+
this.ws.onmessage = (event) => {
|
|
76
|
+
this.onmessage(event)
|
|
77
|
+
// 如果获取到消息,心跳检测重置
|
|
78
|
+
// 拿到任何消息都说明当前连接是正常的
|
|
79
|
+
this.heartCheck()
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
WebsocketHeartbeatJs.prototype.reconnect = function () {
|
|
84
|
+
if (this.lockReconnect || this.forbidReconnect) return
|
|
85
|
+
this.lockReconnect = true
|
|
86
|
+
this.onreconnect()
|
|
87
|
+
// 没连接上会一直重连,设置延迟避免请求过多
|
|
88
|
+
setTimeout(() => {
|
|
89
|
+
this.createWebSocket()
|
|
90
|
+
this.lockReconnect = false
|
|
91
|
+
}, this.opts.reconnectTimeout)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
WebsocketHeartbeatJs.prototype.send = function (msg) {
|
|
95
|
+
this.ws.send(msg)
|
|
96
|
+
}
|
|
97
|
+
// 心跳检测
|
|
98
|
+
WebsocketHeartbeatJs.prototype.heartCheck = function () {
|
|
99
|
+
this.heartReset()
|
|
100
|
+
this.heartStart()
|
|
101
|
+
}
|
|
102
|
+
WebsocketHeartbeatJs.prototype.heartStart = function () {
|
|
103
|
+
if (this.forbidReconnect) return // 不再重连就不再执行心跳
|
|
104
|
+
this.pingTimeoutId = setTimeout(() => {
|
|
105
|
+
// 这里发送一个心跳,后端收到后,返回一个心跳消息,
|
|
106
|
+
// onmessage拿到返回的心跳就说明连接正常
|
|
107
|
+
this.ws.send(this.opts.pingMsg)
|
|
108
|
+
// 如果超过一定时间还没重置,说明后端主动断开了
|
|
109
|
+
this.pongTimeoutId = setTimeout(() => {
|
|
110
|
+
// 如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
|
|
111
|
+
this.ws.close()
|
|
112
|
+
}, this.opts.pongTimeout)
|
|
113
|
+
}, this.opts.pingTimeout)
|
|
114
|
+
}
|
|
115
|
+
WebsocketHeartbeatJs.prototype.heartReset = function () {
|
|
116
|
+
clearTimeout(this.pingTimeoutId)
|
|
117
|
+
clearTimeout(this.pongTimeoutId)
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
WebsocketHeartbeatJs.prototype.close = function () {
|
|
121
|
+
// 如果手动关闭连接,不再重连
|
|
122
|
+
this.forbidReconnect = true
|
|
123
|
+
this.heartReset()
|
|
124
|
+
this.ws.close()
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (window) window.WebsocketHeartbeatJs = WebsocketHeartbeatJs
|
|
128
|
+
export default WebsocketHeartbeatJs
|
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2020 kedacom
|
|
3
|
-
* OpenATC is licensed under Mulan PSL v2.
|
|
4
|
-
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
5
|
-
* You may obtain a copy of Mulan PSL v2 at:
|
|
6
|
-
* http://license.coscl.org.cn/MulanPSL2
|
|
7
|
-
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
8
|
-
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
9
|
-
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
10
|
-
* See the Mulan PSL v2 for more details.
|
|
11
|
-
**/
|
|
12
|
-
/**
|
|
13
|
-
* @Description: 该类实现了websocket订阅服务
|
|
14
|
-
* @Author: chengcheng
|
|
15
|
-
* @Date: Create in 10:02 2018/12/21
|
|
16
|
-
* @Modified By:
|
|
17
|
-
*/
|
|
18
|
-
import WebSocketAsPromised from 'websocket-as-promised'
|
|
19
|
-
import Sub from './Sub'
|
|
20
|
-
export default class KissWsSub {
|
|
21
|
-
/**
|
|
22
|
-
* 构造函数
|
|
23
|
-
* @param {in} wsurl websocket 连接url ws:127.0.0.1:8888
|
|
24
|
-
* @param {in} name 标识模块
|
|
25
|
-
*/
|
|
26
|
-
constructor (wsurl, name) {
|
|
27
|
-
this._url = wsurl
|
|
28
|
-
this._name = name
|
|
29
|
-
this._ws = null
|
|
30
|
-
this._sub_map = new Map()
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* 启动订阅服务
|
|
34
|
-
*/
|
|
35
|
-
async start () {
|
|
36
|
-
if (this._ws !== null && this._ws.isOpened) return
|
|
37
|
-
this._ws = new WebSocketAsPromised(this.url, {
|
|
38
|
-
packMessage: data => JSON.stringify(data),
|
|
39
|
-
unpackMessage: message => JSON.parse(message)
|
|
40
|
-
})
|
|
41
|
-
await this._ws.open()
|
|
42
|
-
this._ws.onUnpackedMessage.addListener(this.dispatchMessage)
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* 停止订阅服务
|
|
46
|
-
*/
|
|
47
|
-
async stop () {
|
|
48
|
-
if (this._ws.isOpening) {
|
|
49
|
-
await this._ws.close()
|
|
50
|
-
} else {
|
|
51
|
-
console.log('The websocket not run!')
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 分发消息
|
|
56
|
-
* @param {in} message
|
|
57
|
-
*/
|
|
58
|
-
dispatchMessage (message) {
|
|
59
|
-
for (let sub of this._sub_map.values()) {
|
|
60
|
-
sub.emitHandleSignal(message)
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* 创建一个订阅 指定订阅类型
|
|
65
|
-
* @param {in} type 订阅类型标识 唯一 不能重复
|
|
66
|
-
*/
|
|
67
|
-
createSub (type) {
|
|
68
|
-
if (this._sub_map.has(type)) {
|
|
69
|
-
return this._sub_map[type]
|
|
70
|
-
}
|
|
71
|
-
let sub = new Sub(type)
|
|
72
|
-
this._sub_map.set(type, sub)
|
|
73
|
-
return sub
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* 获取已经存在的订阅根据订阅类型
|
|
77
|
-
* @param {*} type 订阅类型
|
|
78
|
-
* @return subObject or null
|
|
79
|
-
*/
|
|
80
|
-
getSubByType (type) {
|
|
81
|
-
if (this._sub_map.has(type)) {
|
|
82
|
-
return this._sub_map.get(type)
|
|
83
|
-
}
|
|
84
|
-
return null
|
|
85
|
-
}
|
|
86
|
-
stopSubByType (type) {
|
|
87
|
-
if (this._sub_map.has(type)) {
|
|
88
|
-
return this._sub_map.get(type).stop()
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020 kedacom
|
|
3
|
+
* OpenATC is licensed under Mulan PSL v2.
|
|
4
|
+
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
5
|
+
* You may obtain a copy of Mulan PSL v2 at:
|
|
6
|
+
* http://license.coscl.org.cn/MulanPSL2
|
|
7
|
+
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
8
|
+
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
9
|
+
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
10
|
+
* See the Mulan PSL v2 for more details.
|
|
11
|
+
**/
|
|
12
|
+
/**
|
|
13
|
+
* @Description: 该类实现了websocket订阅服务
|
|
14
|
+
* @Author: chengcheng
|
|
15
|
+
* @Date: Create in 10:02 2018/12/21
|
|
16
|
+
* @Modified By:
|
|
17
|
+
*/
|
|
18
|
+
import WebSocketAsPromised from 'websocket-as-promised'
|
|
19
|
+
import Sub from './Sub'
|
|
20
|
+
export default class KissWsSub {
|
|
21
|
+
/**
|
|
22
|
+
* 构造函数
|
|
23
|
+
* @param {in} wsurl websocket 连接url ws:127.0.0.1:8888
|
|
24
|
+
* @param {in} name 标识模块
|
|
25
|
+
*/
|
|
26
|
+
constructor (wsurl, name) {
|
|
27
|
+
this._url = wsurl
|
|
28
|
+
this._name = name
|
|
29
|
+
this._ws = null
|
|
30
|
+
this._sub_map = new Map()
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 启动订阅服务
|
|
34
|
+
*/
|
|
35
|
+
async start () {
|
|
36
|
+
if (this._ws !== null && this._ws.isOpened) return
|
|
37
|
+
this._ws = new WebSocketAsPromised(this.url, {
|
|
38
|
+
packMessage: data => JSON.stringify(data),
|
|
39
|
+
unpackMessage: message => JSON.parse(message)
|
|
40
|
+
})
|
|
41
|
+
await this._ws.open()
|
|
42
|
+
this._ws.onUnpackedMessage.addListener(this.dispatchMessage)
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 停止订阅服务
|
|
46
|
+
*/
|
|
47
|
+
async stop () {
|
|
48
|
+
if (this._ws.isOpening) {
|
|
49
|
+
await this._ws.close()
|
|
50
|
+
} else {
|
|
51
|
+
console.log('The websocket not run!')
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 分发消息
|
|
56
|
+
* @param {in} message
|
|
57
|
+
*/
|
|
58
|
+
dispatchMessage (message) {
|
|
59
|
+
for (let sub of this._sub_map.values()) {
|
|
60
|
+
sub.emitHandleSignal(message)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 创建一个订阅 指定订阅类型
|
|
65
|
+
* @param {in} type 订阅类型标识 唯一 不能重复
|
|
66
|
+
*/
|
|
67
|
+
createSub (type) {
|
|
68
|
+
if (this._sub_map.has(type)) {
|
|
69
|
+
return this._sub_map[type]
|
|
70
|
+
}
|
|
71
|
+
let sub = new Sub(type)
|
|
72
|
+
this._sub_map.set(type, sub)
|
|
73
|
+
return sub
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 获取已经存在的订阅根据订阅类型
|
|
77
|
+
* @param {*} type 订阅类型
|
|
78
|
+
* @return subObject or null
|
|
79
|
+
*/
|
|
80
|
+
getSubByType (type) {
|
|
81
|
+
if (this._sub_map.has(type)) {
|
|
82
|
+
return this._sub_map.get(type)
|
|
83
|
+
}
|
|
84
|
+
return null
|
|
85
|
+
}
|
|
86
|
+
stopSubByType (type) {
|
|
87
|
+
if (this._sub_map.has(type)) {
|
|
88
|
+
return this._sub_map.get(type).stop()
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|