95 lines
4.8 KiB
JavaScript
95 lines
4.8 KiB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
import { useMemo } from 'react';
|
|
import { throttle as loadshThrottle, noop } from '@zhst/func';
|
|
import { useDeepEffect, useLatest } from '@zhst/hooks';
|
|
import ws from "./ws";
|
|
var getSelf = function getSelf(v) {
|
|
return v;
|
|
};
|
|
export var SocketApi = {
|
|
CameraTaskStatue: 'singer.DeviceService/SubScribeCameraTaskStatus',
|
|
DeviceStatus: 'singer.TaskManagerService/SubscribeTaskStatus',
|
|
SubscribeSolutionDeploy: 'singer.SolutionManagerService/SubscribeSolutionDeploy',
|
|
SubscribeTasksSummary: 'singer.TaskManagerService/SubscribeTasksSummary',
|
|
MonitorSubscribeResult: 'singer.MonitorService/MonitorSubscribeResult',
|
|
MonitorSubscribeStatus: 'singer.MonitorService/MonitorSubscribeStatus',
|
|
SubscribeArchiveGroupUpload: 'singer.ArchiveGroupService/CreateArchiveByImport',
|
|
SubscribeJointTask: 'singer.JointTaskService/SubscribeJointTask',
|
|
SubscribeGroupFragment: 'singer.VideoService/SubscribeVideoFragmentStatus',
|
|
// 监听视频分片状态变化,包括新建、删除、变化
|
|
SubscribeGroup: 'singer.VideoService/SubscribeGroup',
|
|
// 监听视频分组状态变化,列表变化也通知
|
|
SubscribeStreamEvent: 'singer.MediaManagerService/SubscribeStreamEvent' // 监听视频分组状态变化,列表变化也通知
|
|
};
|
|
export default (function (topic) {
|
|
var iterator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
var opt = arguments.length > 2 ? arguments[2] : undefined;
|
|
var _ref = opt || {},
|
|
_ref$req = _ref.req,
|
|
req = _ref$req === void 0 ? {} : _ref$req,
|
|
_ref$throttle = _ref.throttle,
|
|
throttle = _ref$throttle === void 0 ? 0 : _ref$throttle,
|
|
_ref$beforeLoopTmp = _ref.beforeLoopTmp,
|
|
beforeLoopTmp = _ref$beforeLoopTmp === void 0 ? getSelf : _ref$beforeLoopTmp,
|
|
_ref$shouldBreak = _ref.shouldBreak,
|
|
shouldBreak = _ref$shouldBreak === void 0 ? false : _ref$shouldBreak,
|
|
forceRefresh = _ref.forceRefresh,
|
|
close = _ref.close;
|
|
|
|
// 带上token
|
|
var reqstring = useMemo(function () {
|
|
var newReq = _objectSpread(_objectSpread({}, req), {}, {
|
|
extraHeaders: {
|
|
authorization: localStorage.getItem('USER-TOKEN')
|
|
}
|
|
});
|
|
return JSON.stringify(newReq);
|
|
}, [req]);
|
|
var latestIterator = useLatest(iterator);
|
|
useDeepEffect(function () {
|
|
if (close) {
|
|
return;
|
|
}
|
|
//控制socket 请求发送
|
|
if (shouldBreak) {
|
|
return;
|
|
}
|
|
//去抖动
|
|
|
|
var tmpData = [];
|
|
var throttleUpdate = loadshThrottle(function () {
|
|
if (tmpData.length == 0) {
|
|
return;
|
|
}
|
|
var _tmpData = beforeLoopTmp(tmpData);
|
|
latestIterator.current(_tmpData); //加了throttle 数据就变成数组
|
|
tmpData = [];
|
|
}, throttle);
|
|
var unSubscribe = ws.subscribe(SocketApi[topic], reqstring, function (socketData) {
|
|
try {
|
|
if (!throttle) {
|
|
latestIterator.current(socketData);
|
|
} else {
|
|
tmpData.push(socketData);
|
|
throttleUpdate();
|
|
}
|
|
} catch (error) {
|
|
console.error('useSocke:', error);
|
|
}
|
|
});
|
|
return function () {
|
|
try {
|
|
unSubscribe();
|
|
throttleUpdate.cancel();
|
|
} catch (error) {
|
|
console.error(error);
|
|
throw error;
|
|
}
|
|
};
|
|
}, [topic, reqstring, shouldBreak, forceRefresh, close]);
|
|
}); |