UNPKG

syber-lowcode-business-materials

Version:
195 lines (191 loc) 5.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _lodash = _interopRequireDefault(require("lodash")); var Emitter = require('component-emitter'); var EVENT = 'heart'; var DeviceHeartCenter = /*#__PURE__*/function () { function DeviceHeartCenter(props) { this.emitter = new Emitter(); this.heartState = {}; this.heartListener = {}; this.timer = {}; this.initIpcRender(); this.TCPManage = props.TCPManage; } var _proto = DeviceHeartCenter.prototype; _proto.initIpcRender = function initIpcRender() {}; _proto.getHeartState = function getHeartState(deviceId) { return this.heartState[deviceId]; }; _proto.addEmitter = function addEmitter(deviceId, callback) { if (callback) { this.emitter.on(EVENT + '_' + deviceId, callback); return true; } return false; }; _proto.removeEmitter = function removeEmitter(deviceId, callback) { if (callback) { this.emitter.off(EVENT + '_' + deviceId, callback); return true; } return false; }; _proto.removeAllEmitter = function removeAllEmitter(deviceId) { this.emitter.off(EVENT + '_' + deviceId); }; _proto.emitEmitter = function emitEmitter(deviceId, type, data) { this.emitter.emit(EVENT + '_' + deviceId, type, data); } //初始化心跳监听 ; _proto.initHeartListen = function initHeartListen(deviceId, key, callback) { var _this = this; if (!this.TCPManage) { console.log('TCPManage未初始化'); return; } if (!deviceId) { console.log('deviceId未传入'); return; } // console.log("init heart ", deviceId); if (this.heartListener[deviceId]) { //存在 var array = this.heartListener[deviceId]; if (array && array.length > 0) { //array不为空 if (array.indexOf(key) > -1) { console.log('已经存在监听'); } else { console.log('不存在监听'); array.push(key); this.addEmitter(deviceId, callback); } return; } else { console.log('没有进入return'); } } //不存在 this.addEmitter(deviceId, callback); this.TCPManage.addListenDevicePush(deviceId, EVENT, function (data) { // console.log('remote 收到数据 --->', data); _this.TCPManage.sendToDevice(deviceId, EVENT); var json = { heart: 1, //心跳存在 checkHeart: 1, //校验心跳存在 message: data }; _this.heartState[deviceId] = json; _this.emitEmitter(deviceId, true, data); }); this.joinAndroid(deviceId); this.heartListener[deviceId] = [key]; this.startHeartInterval(deviceId); }; _proto.joinAndroid = function joinAndroid(deviceId, getImageInterval) { if (getImageInterval === void 0) { getImageInterval = 3000; } if (!deviceId) { console.log('deviceId未传入'); return; } if (!this.TCPManage) { console.log("TCPManage未初始化"); return; } this.TCPManage.sendToDevice(deviceId, 'joinAndroid', { thumbnailTime: getImageInterval, serverTime: Date.now() }); }; _proto.removeHeartListen = function removeHeartListen(deviceId, key, all, callback) { if (all === void 0) { all = false; } if (!this.TCPManage) { console.log("TCPManage未初始化"); return; } if (!deviceId) { console.log('deviceId未传入'); return; } if (this.heartListener[deviceId]) { var array = this.heartListener[deviceId]; this.heartListener[deviceId] = _lodash["default"].pull(array, key); this.heartState[deviceId] = null; if (all) { this.removeEmitter(deviceId); } else { this.removeEmitter(deviceId, callback); } if (array.length === 0) { this.TCPManage.removeListenDevicePush(deviceId, EVENT); this.stopHeartInterval(deviceId); } } else { console.log('无该设备监听'); } }; _proto.startHeartInterval = function startHeartInterval(deviceId) { var _this2 = this; if (this.timer[deviceId]) { console.log('已经存在'); } else { this.stopHeartInterval(deviceId); this.timer[deviceId] = setInterval(function () { if (_this2.heartState && _this2.heartState[deviceId]) { var json = _this2.heartState[deviceId]; //json 存在并且检验值为1 if (json && json.checkHeart) { json.checkHeart = 0; json.heart = 1; _this2.heartState[deviceId] = json; } else { _this2.heartState[deviceId] = { heart: 0, message: null, checkHeart: 0 }; _this2.joinAndroid(deviceId); _this2.emitEmitter(deviceId, false); } } else { _this2.heartState[deviceId] = { heart: 0, message: null, checkHeart: 0 }; _this2.joinAndroid(deviceId); _this2.emitEmitter(deviceId, false); } }, 5000); } }; _proto.stopHeartInterval = function stopHeartInterval(deviceId) { if (this.timer[deviceId]) { clearInterval(this.timer[deviceId]); this.timer[deviceId] = null; } } // 构造一个单例 ; DeviceHeartCenter.getInstance = function getInstance() { if (!this.instance) { this.instance = new DeviceHeartCenter(); } return this.instance; }; DeviceHeartCenter.clearInstance = function clearInstance() { this.instance = null; }; return DeviceHeartCenter; }(); var _default = exports["default"] = DeviceHeartCenter;