From 75201fffb3d5f469cfa4a77e2e71c98a13224f01 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期四, 21 十一月 2024 14:59:15 +0800
Subject: [PATCH] #
---
Monitor-APP/static/js/dispatcher.js | 41 +++
Monitor-APP/static/js/WebSocketClient.js | 191 +++++++++++++++
Monitor-APP/manifest.json | 173 +++++++++++++-
Monitor-APP/static/js/WebSocketClient02.js | 141 +++++++++++
Monitor-APP/pages/home/home.vue | 161 +++++++++++--
5 files changed, 665 insertions(+), 42 deletions(-)
diff --git a/Monitor-APP/manifest.json b/Monitor-APP/manifest.json
index 6c5100a..073ccc2 100644
--- a/Monitor-APP/manifest.json
+++ b/Monitor-APP/manifest.json
@@ -26,22 +26,165 @@
/* android鎵撳寘閰嶇疆 */
"android" : {
"permissions" : [
- "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
- "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
- "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
- "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
- "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
- "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
- "<uses-permission android:name=\"android.permission.CAMERA\"/>",
- "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
- "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
- "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
- "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
- "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
- "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
- ]
+ "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_CHECKIN_PROPERTIES\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_SURFACE_FLINGER\"/>",
+ "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.ACCOUNT_MANAGER\"/>",
+ "<uses-permission android:name=\"android.permission.ADD_VOICEMAIL\"/>",
+ "<uses-permission android:name=\"android.permission.AUTHENTICATE_ACCOUNTS\"/>",
+ "<uses-permission android:name=\"android.permission.BATTERY_STATS\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_ACCESSIBILITY_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_APPWIDGET\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_CARRIER_MESSAGING_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_DEVICE_ADMIN\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_DREAM_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_INPUT_METHOD\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_NFC_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_NOTIFICATION_LISTENER_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_PRINT_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_REMOTEVIEWS\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_TEXT_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_TV_INPUT\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_VOICE_INTERACTION\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_VPN_SERVICE\"/>",
+ "<uses-permission android:name=\"android.permission.BIND_WALLPAPER\"/>",
+ "<uses-permission android:name=\"android.permission.BLUETOOTH\"/>",
+ "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>",
+ "<uses-permission android:name=\"android.permission.BLUETOOTH_PRIVILEGED\"/>",
+ "<uses-permission android:name=\"android.permission.BODY_SENSORS\"/>",
+ "<uses-permission android:name=\"android.permission.BRICK\"/>",
+ "<uses-permission android:name=\"android.permission.BROADCAST_PACKAGE_REMOVED\"/>",
+ "<uses-permission android:name=\"android.permission.BROADCAST_SMS\"/>",
+ "<uses-permission android:name=\"android.permission.BROADCAST_STICKY\"/>",
+ "<uses-permission android:name=\"android.permission.BROADCAST_WAP_PUSH\"/>",
+ "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+ "<uses-permission android:name=\"android.permission.CALL_PRIVILEGED\"/>",
+ "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+ "<uses-permission android:name=\"android.permission.CAPTURE_AUDIO_OUTPUT\"/>",
+ "<uses-permission android:name=\"android.permission.CAPTURE_SECURE_VIDEO_OUTPUT\"/>",
+ "<uses-permission android:name=\"android.permission.CAPTURE_VIDEO_OUTPUT\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_COMPONENT_ENABLED_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_CONFIGURATION\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_WIFI_MULTICAST_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.CLEAR_APP_CACHE\"/>",
+ "<uses-permission android:name=\"android.permission.CLEAR_APP_USER_DATA\"/>",
+ "<uses-permission android:name=\"android.permission.CONTROL_LOCATION_UPDATES\"/>",
+ "<uses-permission android:name=\"android.permission.DELETE_CACHE_FILES\"/>",
+ "<uses-permission android:name=\"android.permission.DELETE_PACKAGES\"/>",
+ "<uses-permission android:name=\"android.permission.DEVICE_POWER\"/>",
+ "<uses-permission android:name=\"android.permission.DIAGNOSTIC\"/>",
+ "<uses-permission android:name=\"android.permission.DISABLE_KEYGUARD\"/>",
+ "<uses-permission android:name=\"android.permission.DUMP\"/>",
+ "<uses-permission android:name=\"android.permission.EXPAND_STATUS_BAR\"/>",
+ "<uses-permission android:name=\"android.permission.FACTORY_TEST\"/>",
+ "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+ "<uses-permission android:name=\"android.permission.FORCE_BACK\"/>",
+ "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+ "<uses-permission android:name=\"android.permission.GET_PACKAGE_SIZE\"/>",
+ "<uses-permission android:name=\"android.permission.GET_TASKS\"/>",
+ "<uses-permission android:name=\"android.permission.GET_TOP_ACTIVITY_INFO\"/>",
+ "<uses-permission android:name=\"android.permission.GLOBAL_SEARCH\"/>",
+ "<uses-permission android:name=\"android.permission.HARDWARE_TEST\"/>",
+ "<uses-permission android:name=\"android.permission.INJECT_EVENTS\"/>",
+ "<uses-permission android:name=\"android.permission.INSTALL_LOCATION_PROVIDER\"/>",
+ "<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
+ "<uses-permission android:name=\"android.permission.INSTALL_SHORTCUT\"/>",
+ "<uses-permission android:name=\"android.permission.INTERNAL_SYSTEM_WINDOW\"/>",
+ "<uses-permission android:name=\"android.permission.INTERNET\"/>",
+ "<uses-permission android:name=\"android.permission.KILL_BACKGROUND_PROCESSES\"/>",
+ "<uses-permission android:name=\"android.permission.LOCATION_HARDWARE\"/>",
+ "<uses-permission android:name=\"android.permission.MANAGE_ACCOUNTS\"/>",
+ "<uses-permission android:name=\"android.permission.MANAGE_APP_TOKENS\"/>",
+ "<uses-permission android:name=\"android.permission.MANAGE_DOCUMENTS\"/>",
+ "<uses-permission android:name=\"android.permission.MASTER_CLEAR\"/>",
+ "<uses-permission android:name=\"android.permission.MEDIA_CONTENT_CONTROL\"/>",
+ "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+ "<uses-permission android:name=\"android.permission.MODIFY_PHONE_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.MOUNT_FORMAT_FILESYSTEMS\"/>",
+ "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+ "<uses-permission android:name=\"android.permission.NFC\"/>",
+ "<uses-permission android:name=\"android.permission.PERSISTENT_ACTIVITY\"/>",
+ "<uses-permission android:name=\"android.permission.PROCESS_OUTGOING_CALLS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_CALENDAR\"/>",
+ "<uses-permission android:name=\"android.permission.READ_CALL_LOG\"/>",
+ "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_FRAME_BUFFER\"/>",
+ "<uses-permission android:name=\"android.permission.READ_HISTORY_BOOKMARKS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_INPUT_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_PROFILE\"/>",
+ "<uses-permission android:name=\"android.permission.READ_SMS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_SOCIAL_STREAM\"/>",
+ "<uses-permission android:name=\"android.permission.READ_SYNC_SETTINGS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_SYNC_STATS\"/>",
+ "<uses-permission android:name=\"android.permission.READ_USER_DICTIONARY\"/>",
+ "<uses-permission android:name=\"android.permission.READ_VOICEMAIL\"/>",
+ "<uses-permission android:name=\"android.permission.REBOOT\"/>",
+ "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
+ "<uses-permission android:name=\"android.permission.RECEIVE_MMS\"/>",
+ "<uses-permission android:name=\"android.permission.RECEIVE_SMS\"/>",
+ "<uses-permission android:name=\"android.permission.RECEIVE_WAP_PUSH\"/>",
+ "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+ "<uses-permission android:name=\"android.permission.REORDER_TASKS\"/>",
+ "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
+ "<uses-permission android:name=\"android.permission.RESTART_PACKAGES\"/>",
+ "<uses-permission android:name=\"android.permission.SEND_RESPOND_VIA_MESSAGE\"/>",
+ "<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
+ "<uses-permission android:name=\"android.permission.SET_ACTIVITY_WATCHER\"/>",
+ "<uses-permission android:name=\"android.permission.SET_ALARM\"/>",
+ "<uses-permission android:name=\"android.permission.SET_ALWAYS_FINISH\"/>",
+ "<uses-permission android:name=\"android.permission.SET_ANIMATION_SCALE\"/>",
+ "<uses-permission android:name=\"android.permission.SET_DEBUG_APP\"/>",
+ "<uses-permission android:name=\"android.permission.SET_ORIENTATION\"/>",
+ "<uses-permission android:name=\"android.permission.SET_POINTER_SPEED\"/>",
+ "<uses-permission android:name=\"android.permission.SET_PREFERRED_APPLICATIONS\"/>",
+ "<uses-permission android:name=\"android.permission.SET_PROCESS_LIMIT\"/>",
+ "<uses-permission android:name=\"android.permission.SET_TIME\"/>",
+ "<uses-permission android:name=\"android.permission.SET_TIME_ZONE\"/>",
+ "<uses-permission android:name=\"android.permission.SET_WALLPAPER\"/>",
+ "<uses-permission android:name=\"android.permission.SET_WALLPAPER_HINTS\"/>",
+ "<uses-permission android:name=\"android.permission.SIGNAL_PERSISTENT_PROCESSES\"/>",
+ "<uses-permission android:name=\"android.permission.STATUS_BAR\"/>",
+ "<uses-permission android:name=\"android.permission.SUBSCRIBED_FEEDS_READ\"/>",
+ "<uses-permission android:name=\"android.permission.SUBSCRIBED_FEEDS_WRITE\"/>",
+ "<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
+ "<uses-permission android:name=\"android.permission.TRANSMIT_IR\"/>",
+ "<uses-permission android:name=\"android.permission.UNINSTALL_SHORTCUT\"/>",
+ "<uses-permission android:name=\"android.permission.UPDATE_DEVICE_STATS\"/>",
+ "<uses-permission android:name=\"android.permission.USE_CREDENTIALS\"/>",
+ "<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>",
+ "<uses-permission android:name=\"android.permission.USE_SIP\"/>",
+ "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+ "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_APN_SETTINGS\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_CALENDAR\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_CALL_LOG\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_GSERVICES\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_HISTORY_BOOKMARKS\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_PROFILE\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SECURE_SETTINGS\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SMS\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SOCIAL_STREAM\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_SYNC_SETTINGS\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_USER_DICTIONARY\"/>",
+ "<uses-permission android:name=\"android.permission.WRITE_VOICEMAIL\"/>",
+ "<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\"/>"
+ ],
+ "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
},
/* ios鎵撳寘閰嶇疆 */
"ios" : {
diff --git a/Monitor-APP/pages/home/home.vue b/Monitor-APP/pages/home/home.vue
index ac2912f..83b77f6 100644
--- a/Monitor-APP/pages/home/home.vue
+++ b/Monitor-APP/pages/home/home.vue
@@ -328,6 +328,7 @@
<script>
import demodata from '@/mockdata/demodata.json';
import ycqdata from '@/pages/index/data.json';
+ import {WebSocketClient} from "@/static/js/WebSocketClient"
export default {
data() {
return {
@@ -416,42 +417,148 @@
// this.getUrl()
},
onLoad() {
- // this.ws()
setInterval(()=>{
this.getServerData()
- this.initlineChart()
- this.initPieChart()
- this.getOther()
- this.getDate()
- this.getDate2()
- this.getInfo()
- this.getError()
- // this.getInfo2()
- // this.getError2()
- this.getUrl()
+ // this.initlineChart()
+ // this.initPieChart()
+ // this.getOther()
+ // // this.getDate()
+ // this.getDate2()
+ // this.getInfo()
+ // this.getError()
+ // // this.getInfo2()
+ // // this.getError2()
+ // this.getUrl()
this.controller()
-
+ // this.statisticalModel()
// 娴嬭瘯鐢�
},1000)
+ setInterval(()=> {
+ setTimeout(()=>{
+ plus.runtime.restart();
+ },100)
+
+ },1000*60*60*4)
+
+ setInterval(()=> {
+ setTimeout(()=>{
+ var time = new Date();
+ var hh = time.getHours();
+ var mm = time.getMinutes();
+ if(hh > this.oldHours && mm >this.oldMin && this.oldMin - mm < 55){
+ plus.runtime.restart();
+ }
+ if(mm >this.oldMin && mm - this.oldMin >2){
+ plus.runtime.restart();
+ }
+ },100)
+
+ },1000*30)
+ },
+ created() {
+ let that = this
+ const BaseIP = uni.getStorageSync('BaseIp');
+ const BaseLedId = uni.getStorageSync('BaseLedId');
+ const BasePort = uni.getStorageSync('BasePort');
+ const BaseCrnId = uni.getStorageSync('BaseCrnId');
+ const PROJ = uni.getStorageSync('UPROJ');
+ that.baseUrl = "pswcs"
+ that.baseIP = "10.10.10.230"
+ that.baseLedId = BaseLedId
+ that.basePort = "9090"
+ that.baseCrnId = BaseCrnId
+ that.webSockerInit();
},
methods: {
- ws() {
- let _this = this
- _this.connectWS()
- uni.onSocketOpen(function (res) {
- console.log("Open");
- })
- uni.onSocketClose(function (res) {
- console.log("Close");
- setInterval(()=>{
- _this.connectWS()
- },1000)
- })
- },
- connectWS() {
- uni.connectSocket({ url: `http://127.0.0.1:9090/pswcs/console/websocket`, })
+ webSockerInit(){
+ let that = this;
+ that.commonUrl = that.baseIP + ':' +that.basePort + "/" +that.baseUrl
+ let socketUrl = "ws://"+that.commonUrl+"/led/"+that.baseLedId
+ // socketUrl = "ws://10.0.100.150:8080/gtctu/led/113"
+ const ws = new WebSocketClient(socketUrl);
+ ws.connect()
+ ws.onmessage((msg)=>{
+ let data = JSON.parse(msg.data)
+ if(data.type === "default"){
+ that.chartsData.Pie.series[0].data = data.pie
+ that.baseInfo.stockCount = data.stockCunt
+ that.baseInfo.emptyCount = data.emptyCount
+ that.baseInfo.noneCount =data.noneCount
+ that.baseInfo.used = data.used
+ that.baseInfo.usedPr = data.usedPr
+
+ that.chartsData.Line.categories = [
+ that.getDateFormat(-11),that.getDateFormat(-10),that.getDateFormat(-9),that.getDateFormat(-8),
+ that.getDateFormat(-7),that.getDateFormat(-6),that.getDateFormat(-5),that.getDateFormat(-4),
+ that.getDateFormat(-3),that.getDateFormat(-2),that.getDateFormat(-1),that.getDateFormat(0),]
+ that.chartsData.Line.series = data.rows
+ that.calendar = data.year + "骞�" + data.month + "鏈�" + data.day + "鏃� " + data.hour + ":" + data.minute + ":" + data.second + " " + data.week
+ that.currDate = data.year + "/" + data.month + "/" + data.day
+ that.locList = data.inventoryData
+ that.oldHours = data.hour
+ that.oldMin = data.minute
+ }else if(data.type === "error"){
+ if (data.errMsg && data.errMsg !== "") {
+ var errorInfo = data.errMsg
+ if (that.infoType == 1) {
+ that.infoType = 3
+ that.infoText.title = "鍏朵粬淇℃伅"
+ // that.infoText.title = "寮傚父"
+ that.infoText.error = errorInfo
+ return
+ }
+ that.infoType = 2
+ that.infoText.title = "鍏朵粬淇℃伅"
+ // that.infoText.title = "寮傚父"
+ that.infoText.error = errorInfo
+ } else {
+ if (that.infoType == 1) {
+ return
+ }
+ that.infoType = 0
+ }
+ }else if(data.type === "task"){
+ if (data.taskList && data.taskList !== "" && data.taskList.length !=0) {
+ if (that.infoType == 2 || that.infoType == 3) {
+ return;
+ }
+ // infoType1:鍙湁鎷f枡绛変俊鎭�
+ that.infoType = 1
+ if (data.taskList[0].ioType === 101) {
+ that.infoText.title = '鍏ㄦ澘鍑哄簱'
+ } else if(data.taskList[0].ioType === 103) {
+ that.infoText.title = '鎷f枡鍑哄簱'
+ } else if(data.taskList[0].ioType === 107) {
+ that.infoText.title = '鐩樼偣鍑哄簱'
+ } else if(data.taskList[0].ioType === 1) {
+ that.infoText.title = '鍏ュ簱'
+ } else if(data.taskList[0].ioType === 10) {
+ that.infoText.title = '绌烘墭鍏ュ簱'
+ } else if(data.taskList[0].ioType === 110) {
+ that.infoText.title = '绌烘墭鍑哄簱'
+ }else if(data.taskList[0].ioType === 104) {
+ that.infoText.title = '骞舵澘鍑哄簱'
+ }
+ that.infoText.barcode = data.taskList[0].barcode
+ that.infoText.workNo = data.taskList[0].workNo
+ that.infoText.sourceLocNo = data.taskList[0].sourceLocNo
+ that.infoText.staNo = data.taskList[0].staNo
+ that.swiperList = data.taskList[0].matDtos
+ // that.infoText.matnr = res.data[0].matDtos[0].matnr
+ // that.infoText.specs = res.data[0].matDtos[0].specs
+ // that.infoText.maknx = res.data[0].matDtos[0].maknx
+ // that.infoText.count = res.data[0].matDtos[0].count
+ } else {
+ if (that.infoType == 2 || that.infoType == 3) {
+ return;
+ }
+ that.infoType = 0
+ }
+ }
+
+ })
},
timeOut1() {
console.log(this.times);
diff --git a/Monitor-APP/static/js/WebSocketClient.js b/Monitor-APP/static/js/WebSocketClient.js
new file mode 100644
index 0000000..c8a5b6a
--- /dev/null
+++ b/Monitor-APP/static/js/WebSocketClient.js
@@ -0,0 +1,191 @@
+import { EventDispatcher } from './dispatcher';
+
+export class WebSocketClient extends EventDispatcher {
+ // #socket閾炬帴
+ url = '';
+ // #socket瀹炰緥
+ socket = null;
+ // #閲嶈繛娆℃暟
+ reconnectAttempts = 0;
+ // #鏈�澶ч噸杩炴暟
+ maxReconnectAttempts = 20;
+ // #閲嶈繛闂撮殧
+ reconnectInterval = 60000; // 10 seconds
+ // #鍙戦�佸績璺虫暟鎹棿闅�
+ heartbeatInterval = 1000 * 30;
+ // #璁℃椂鍣╥d
+ heartbeatTimer = undefined;
+ // #褰诲簳缁堟ws
+ stopWs = false;
+ // *鏋勯�犲嚱鏁�
+ constructor(url) {
+ super();
+ this.url = url;
+ }
+ // >鐢熷懡鍛ㄦ湡閽╁瓙
+ onopen(callBack) {
+ this.addEventListener('open', callBack);
+ }
+ onmessage(callBack) {
+ this.addEventListener('message', callBack);
+ }
+ onclose(callBack) {
+ this.addEventListener('close', callBack);
+ }
+ onerror(callBack) {
+ this.addEventListener('error', callBack);
+ }
+ // >娑堟伅鍙戦��
+ send(message) {
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
+ this.socket.send({
+ data:message,
+ });
+ } else {
+ console.error('[WebSocket] 鏈繛鎺�');
+ }
+ }
+
+ // !鍒濆鍖栬繛鎺�
+ connect() {
+ if (this.reconnectAttempts === 0) {
+ this.log('WebSocket', `鍒濆鍖栬繛鎺ヤ腑... ${this.url}`);
+ }
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
+ return;
+ }
+ this.socket = uni.connectSocket({
+ url: this.url,
+ complete: ()=> {}
+ });
+ this.socket.onOpen((event)=>{
+ this.stopWs = false;
+ // 閲嶇疆閲嶈繛灏濊瘯鎴愬姛杩炴帴
+ this.reconnectAttempts = 0;
+ // 鍦ㄨ繛鎺ユ垚鍔熸椂鍋滄褰撳墠鐨勫績璺虫娴嬪苟閲嶆柊鍚姩
+ this.startHeartbeat();
+ this.log('WebSocket', `杩炴帴鎴愬姛,绛夊緟鏈嶅姟绔暟鎹帹閫乕onopen]... ${this.url}`);
+ this.dispatchEvent('open', event);
+ })
+ // !websocket杩炴帴鎴愬姛
+ // this.socket.onOpen = event => {
+ // this.stopWs = false;
+ // // 閲嶇疆閲嶈繛灏濊瘯鎴愬姛杩炴帴
+ // this.reconnectAttempts = 0;
+ // // 鍦ㄨ繛鎺ユ垚鍔熸椂鍋滄褰撳墠鐨勫績璺虫娴嬪苟閲嶆柊鍚姩
+ // this.startHeartbeat();
+ // this.log('WebSocket', `杩炴帴鎴愬姛,绛夊緟鏈嶅姟绔暟鎹帹閫乕onopen]... ${this.url}`);
+ // this.dispatchEvent('open', event);
+ // };
+ this.socket.onMessage((event)=>{
+ this.dispatchEvent('message', event);
+ this.startHeartbeat();
+ })
+ // this.socket.onMessage = event => {
+ // console.log(event)
+ // this.dispatchEvent('message', event);
+ // this.startHeartbeat();
+ // };
+ this.socket.onClose((event)=>{
+ if (this.reconnectAttempts === 0) {
+ this.log('WebSocket', `杩炴帴鏂紑[onclose]... ${this.url}`);
+ }
+ if (!this.stopWs) {
+ this.handleReconnect();
+ }
+ this.dispatchEvent('close', event);
+ })
+ // this.socket.onClose = event => {
+ // if (this.reconnectAttempts === 0) {
+ // this.log('WebSocket', `杩炴帴鏂紑[onclose]... ${this.url}`);
+ // }
+ // if (!this.stopWs) {
+ // this.handleReconnect();
+ // }
+ // this.dispatchEvent('close', event);
+ // };
+ this.socket.onError((event)=>{
+ if (this.reconnectAttempts === 0) {
+ this.log('WebSocket', `杩炴帴寮傚父[onerror]... ${this.url}`);
+ }
+ if (!this.stopWs) {
+ this.handleReconnect();
+ }
+ this.closeHeartbeat();
+ this.dispatchEvent('error', event);
+ })
+
+ // uni.onSocketError((event)=>{
+ // console.log("333")
+ // if (this.reconnectAttempts === 0) {
+ // this.log('WebSocket', `杩炴帴寮傚父[onerror]... ${this.url}`);
+ // }
+ // if (!this.stopWs) {
+ // this.handleReconnect();
+ // }
+ // this.closeHeartbeat();
+ // this.dispatchEvent('error', event);
+ // })
+ // this.socket.onError = event => {
+ // if (this.reconnectAttempts === 0) {
+ // this.log('WebSocket', `杩炴帴寮傚父[onerror]... ${this.url}`);
+ // }
+ // this.closeHeartbeat();
+ // this.dispatchEvent('error', event);
+ // };
+ }
+
+ // > 鏂綉閲嶈繛閫昏緫
+ handleReconnect() {
+ if (this.reconnectAttempts < this.maxReconnectAttempts) {
+ this.reconnectAttempts++;
+ this.log('WebSocket', `灏濊瘯閲嶈繛... (${this.reconnectAttempts}/${this.maxReconnectAttempts}) ${this.url}`);
+ setTimeout(() => {
+ this.connect();
+ }, this.reconnectInterval);
+ } else {
+ plus.runtime.restart();
+ // this.closeHeartbeat();
+ // this.log('WebSocket', `鏈�澶ч噸杩炲け璐ワ紝缁堟閲嶈繛: ${this.url}`);
+ }
+ }
+
+ // >鍏抽棴杩炴帴
+ close() {
+ if (this.socket) {
+ this.stopWs = true;
+ this.socket.close();
+ this.socket = null;
+ this.removeEventListener('open');
+ this.removeEventListener('message');
+ this.removeEventListener('close');
+ this.removeEventListener('error');
+ }
+ this.closeHeartbeat();
+ }
+
+ // >寮�濮嬪績璺虫娴� -> 瀹氭椂鍙戦�佸績璺虫秷鎭�
+ startHeartbeat() {
+ if (this.stopWs) return;
+ if (this.heartbeatTimer) {
+ this.closeHeartbeat();
+ }
+ this.heartbeatTimer = setInterval(() => {
+ if (this.socket) {
+ this.socket.send({
+ data: JSON.stringify({ type: 'heartBeat', data: {} }),
+
+ });
+ this.log('WebSocket', '閫佸績璺虫暟鎹�...');
+ } else {
+ console.error('[WebSocket] 鏈繛鎺�');
+ }
+ }, this.heartbeatInterval);
+ }
+
+ // >鍏抽棴蹇冭烦
+ closeHeartbeat() {
+ clearInterval(this.heartbeatTimer);
+ this.heartbeatTimer = undefined;
+ }
+}
\ No newline at end of file
diff --git a/Monitor-APP/static/js/WebSocketClient02.js b/Monitor-APP/static/js/WebSocketClient02.js
new file mode 100644
index 0000000..7ea8584
--- /dev/null
+++ b/Monitor-APP/static/js/WebSocketClient02.js
@@ -0,0 +1,141 @@
+// import { EventDispatcher } from './dispatcher';
+
+export class WebSocketClient extends EventDispatcher {
+ // #socket閾炬帴
+ url = '';
+ // #socket瀹炰緥
+ socket = null;
+ // #閲嶈繛娆℃暟
+ reconnectAttempts = 0;
+ // #鏈�澶ч噸杩炴暟
+ maxReconnectAttempts = 5;
+ // #閲嶈繛闂撮殧
+ reconnectInterval = 10000; // 10 seconds
+ // #鍙戦�佸績璺虫暟鎹棿闅�
+ heartbeatInterval = 1000 * 30;
+ // #璁℃椂鍣╥d
+ heartbeatTimer = undefined;
+ // #褰诲簳缁堟ws
+ stopWs = false;
+ // *鏋勯�犲嚱鏁�
+ constructor(url) {
+ super();
+ this.url = url;
+ }
+ // >鐢熷懡鍛ㄦ湡閽╁瓙
+ onopen(callBack) {
+ this.addEventListener('open', callBack);
+ }
+ onmessage(callBack) {
+ this.addEventListener('message', callBack);
+ }
+ onclose(callBack) {
+ this.addEventListener('close', callBack);
+ }
+ onerror(callBack) {
+ this.addEventListener('error', callBack);
+ }
+ // >娑堟伅鍙戦��
+ send(message) {
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
+ this.socket.send(message);
+ } else {
+ console.error('[WebSocket] 鏈繛鎺�');
+ }
+ }
+
+ // !鍒濆鍖栬繛鎺�
+ connect() {
+ if (this.reconnectAttempts === 0) {
+ this.log('WebSocket', `鍒濆鍖栬繛鎺ヤ腑... ${this.url}`);
+ }
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
+ return;
+ }
+ this.socket = new WebSocket(this.url);
+
+ // !websocket杩炴帴鎴愬姛
+ this.socket.onopen = event => {
+ this.stopWs = false;
+ // 閲嶇疆閲嶈繛灏濊瘯鎴愬姛杩炴帴
+ this.reconnectAttempts = 0;
+ // 鍦ㄨ繛鎺ユ垚鍔熸椂鍋滄褰撳墠鐨勫績璺虫娴嬪苟閲嶆柊鍚姩
+ this.startHeartbeat();
+ this.log('WebSocket', `杩炴帴鎴愬姛,绛夊緟鏈嶅姟绔暟鎹帹閫乕onopen]... ${this.url}`);
+ this.dispatchEvent('open', event);
+ };
+
+ this.socket.onmessage = event => {
+ this.dispatchEvent('message', event);
+ this.startHeartbeat();
+ };
+
+ this.socket.onclose = event => {
+ if (this.reconnectAttempts === 0) {
+ this.log('WebSocket', `杩炴帴鏂紑[onclose]... ${this.url}`);
+ }
+ if (!this.stopWs) {
+ this.handleReconnect();
+ }
+ this.dispatchEvent('close', event);
+ };
+
+ this.socket.onerror = event => {
+ if (this.reconnectAttempts === 0) {
+ this.log('WebSocket', `杩炴帴寮傚父[onerror]... ${this.url}`);
+ }
+ this.closeHeartbeat();
+ this.dispatchEvent('error', event);
+ };
+ }
+
+ // > 鏂綉閲嶈繛閫昏緫
+ handleReconnect() {
+ if (this.reconnectAttempts < this.maxReconnectAttempts) {
+ this.reconnectAttempts++;
+ this.log('WebSocket', `灏濊瘯閲嶈繛... (${this.reconnectAttempts}/${this.maxReconnectAttempts}) ${this.url}`);
+ setTimeout(() => {
+ this.connect();
+ }, this.reconnectInterval);
+ } else {
+ this.closeHeartbeat();
+ this.log('WebSocket', `鏈�澶ч噸杩炲け璐ワ紝缁堟閲嶈繛: ${this.url}`);
+ }
+ }
+
+ // >鍏抽棴杩炴帴
+ close() {
+ if (this.socket) {
+ this.stopWs = true;
+ this.socket.close();
+ this.socket = null;
+ this.removeEventListener('open');
+ this.removeEventListener('message');
+ this.removeEventListener('close');
+ this.removeEventListener('error');
+ }
+ this.closeHeartbeat();
+ }
+
+ // >寮�濮嬪績璺虫娴� -> 瀹氭椂鍙戦�佸績璺虫秷鎭�
+ startHeartbeat() {
+ if (this.stopWs) return;
+ if (this.heartbeatTimer) {
+ this.closeHeartbeat();
+ }
+ this.heartbeatTimer = setInterval(() => {
+ if (this.socket) {
+ this.socket.send(JSON.stringify({ type: 'heartBeat', data: {} }));
+ this.log('WebSocket', '閫佸績璺虫暟鎹�...');
+ } else {
+ console.error('[WebSocket] 鏈繛鎺�');
+ }
+ }, this.heartbeatInterval);
+ }
+
+ // >鍏抽棴蹇冭烦
+ closeHeartbeat() {
+ clearInterval(this.heartbeatTimer);
+ this.heartbeatTimer = undefined;
+ }
+}
\ No newline at end of file
diff --git a/Monitor-APP/static/js/dispatcher.js b/Monitor-APP/static/js/dispatcher.js
new file mode 100644
index 0000000..8259b48
--- /dev/null
+++ b/Monitor-APP/static/js/dispatcher.js
@@ -0,0 +1,41 @@
+class Log {
+ static console = true;
+ log(title, text) {
+ // if (!Log.console) return;
+ // if (import.meta.env.MODE === 'production') return;
+ const color = '#ff4d4f';
+ console.log(
+ `%c ${title} %c ${text} %c`,
+ `background:${color};border:1px solid ${color}; padding: 1px; border-radius: 2px 0 0 2px; color: #fff;`,
+ `border:1px solid ${color}; padding: 1px; border-radius: 0 2px 2px 0; color: ${color};`,
+ 'background:transparent'
+ );
+ }
+ closeConsole() {
+ Log.console = false;
+ }
+}
+export class EventDispatcher extends Log {
+ listeners = {};
+
+ addEventListener(type, listener) {
+ if (!this.listeners[type]) {
+ this.listeners[type] = [];
+ }
+ if (this.listeners[type].indexOf(listener) === -1) {
+ this.listeners[type].push(listener);
+ }
+ }
+
+ removeEventListener(type) {
+ this.listeners[type] = [];
+ }
+
+ dispatchEvent(type, data) {
+ const listenerArray = this.listeners[type] || [];
+ if (listenerArray.length === 0) return;
+ listenerArray.forEach(listener => {
+ listener.call(this, data);
+ });
+ }
+}
\ No newline at end of file
--
Gitblit v1.9.1