@ray-js/robot-data-stream 0.0.5 → 0.0.7
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/lib/api/p2pApi.js +17 -11
- package/lib/api/sweeperP2p.d.ts +1 -1
- package/lib/api/sweeperP2p.js +13 -3
- package/lib/index.js +31 -26
- package/package.json +1 -1
package/lib/api/p2pApi.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable consistent-return */
|
|
2
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
1
3
|
/* eslint-disable prefer-promise-reject-errors */
|
|
2
4
|
import { p2p } from '@ray-js/ray';
|
|
3
5
|
import moment from 'moment';
|
|
@@ -31,11 +33,15 @@ export default class P2pApi {
|
|
|
31
33
|
if (this.isConnected) {
|
|
32
34
|
typeof successCb === 'function' && successCb();
|
|
33
35
|
}
|
|
34
|
-
}, () => {
|
|
36
|
+
}, () => {
|
|
37
|
+
//
|
|
38
|
+
}, () => {
|
|
35
39
|
log4js.info('reconnect complete ==>', String(this.isConnected));
|
|
36
40
|
if (!this.isConnected) {
|
|
37
41
|
log4js.warn('p2p reconnect failed ==>', moment().format('YYYY-MM-DD HH:mm:ss'));
|
|
38
|
-
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
this.reconnectP2p(successCb);
|
|
44
|
+
}, 3000);
|
|
39
45
|
}
|
|
40
46
|
});
|
|
41
47
|
}
|
|
@@ -155,7 +161,9 @@ export default class P2pApi {
|
|
|
155
161
|
}, 500);
|
|
156
162
|
resolve(false);
|
|
157
163
|
},
|
|
158
|
-
complete: () => {
|
|
164
|
+
complete: () => {
|
|
165
|
+
//
|
|
166
|
+
}
|
|
159
167
|
});
|
|
160
168
|
});
|
|
161
169
|
}
|
|
@@ -192,7 +200,9 @@ export default class P2pApi {
|
|
|
192
200
|
}, 500);
|
|
193
201
|
resolve(false);
|
|
194
202
|
},
|
|
195
|
-
complete: () => {
|
|
203
|
+
complete: () => {
|
|
204
|
+
//
|
|
205
|
+
}
|
|
196
206
|
});
|
|
197
207
|
});
|
|
198
208
|
}
|
|
@@ -239,7 +249,9 @@ export default class P2pApi {
|
|
|
239
249
|
}, 500);
|
|
240
250
|
resolve(false);
|
|
241
251
|
},
|
|
242
|
-
complete: () => {
|
|
252
|
+
complete: () => {
|
|
253
|
+
//
|
|
254
|
+
}
|
|
243
255
|
});
|
|
244
256
|
});
|
|
245
257
|
}
|
|
@@ -351,12 +363,6 @@ export default class P2pApi {
|
|
|
351
363
|
* @returns
|
|
352
364
|
*/
|
|
353
365
|
deInitP2PSDK = async () => {
|
|
354
|
-
// 先销毁断开监听
|
|
355
|
-
typeof this.offSessionStatusChange === 'function' && this.offSessionStatusChange();
|
|
356
|
-
// 销毁初始化时,先进行断连操作
|
|
357
|
-
if (this.isConnected) {
|
|
358
|
-
await this.disconnectDevice();
|
|
359
|
-
}
|
|
360
366
|
return new Promise((resolve, reject) => {
|
|
361
367
|
try {
|
|
362
368
|
p2p.deInitSDK({
|
package/lib/api/sweeperP2p.d.ts
CHANGED
|
@@ -169,7 +169,7 @@ export declare class SweeperP2p extends P2pApi {
|
|
|
169
169
|
/**
|
|
170
170
|
* 停止文件下载
|
|
171
171
|
*/
|
|
172
|
-
stopObserverSweeperDataByP2P: () => Promise<
|
|
172
|
+
stopObserverSweeperDataByP2P: () => Promise<false | undefined>;
|
|
173
173
|
}
|
|
174
174
|
declare const sweeperP2pInstance: SweeperP2p;
|
|
175
175
|
export default sweeperP2pInstance;
|
package/lib/api/sweeperP2p.js
CHANGED
|
@@ -358,6 +358,10 @@ export class SweeperP2p extends P2pApi {
|
|
|
358
358
|
fileName = 'aiHD_XXXX_YYYY.bin.stream';
|
|
359
359
|
}
|
|
360
360
|
const cachePacketMap = this.packetDataCacheMap.get(fileName);
|
|
361
|
+
if (!cachePacketMap) {
|
|
362
|
+
log4js.warn(`p2pStreamPacketReceiveCallback: fileName : ${fileName} is not support`);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
361
365
|
const cacheSerialNumber = this.packetSerialNumberCacheMap.get(fileName);
|
|
362
366
|
|
|
363
367
|
// 说明收到了过时包的数据
|
|
@@ -531,12 +535,18 @@ export class SweeperP2p extends P2pApi {
|
|
|
531
535
|
/**
|
|
532
536
|
* 停止文件下载
|
|
533
537
|
*/
|
|
538
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, consistent-return
|
|
534
539
|
stopObserverSweeperDataByP2P = async () => {
|
|
535
540
|
try {
|
|
536
541
|
this.removeP2pDownloadEvent();
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
542
|
+
await this.cancelDownloadTask();
|
|
543
|
+
|
|
544
|
+
// 先销毁断开监听
|
|
545
|
+
typeof this.offSessionStatusChange === 'function' && this.offSessionStatusChange();
|
|
546
|
+
// 销毁初始化时,先进行断连操作
|
|
547
|
+
if (this.isConnected) {
|
|
548
|
+
this.disconnectDevice();
|
|
549
|
+
}
|
|
540
550
|
} catch (e) {
|
|
541
551
|
log4js.error('stopObserverSweeperDataByP2P occur error ==>', e);
|
|
542
552
|
return false;
|
package/lib/index.js
CHANGED
|
@@ -11,7 +11,7 @@ const useP2PDataStream = (devId, onReceiveMapData, onReceivePathData, opt) => {
|
|
|
11
11
|
onReceiveAIPicData,
|
|
12
12
|
onReceiveAIPicHDData
|
|
13
13
|
} = opt || {};
|
|
14
|
-
const isInit = useRef(
|
|
14
|
+
const isInit = useRef(false);
|
|
15
15
|
const offSessionStatusChange = useRef(null);
|
|
16
16
|
const isAppOnBackground = useRef(false);
|
|
17
17
|
const timer = useRef(null);
|
|
@@ -20,6 +20,10 @@ const useP2PDataStream = (devId, onReceiveMapData, onReceivePathData, opt) => {
|
|
|
20
20
|
if (logTag) {
|
|
21
21
|
log4js.setTag(logTag);
|
|
22
22
|
}
|
|
23
|
+
if (devId.startsWith('vdevo')) {
|
|
24
|
+
log4js.warn('virtual device cannot use p2p');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
23
27
|
if (isIDE) {
|
|
24
28
|
log4js.warn(`You are using the IDE environment. To perform P2P and map debugging, please ensure the 'Robot Vacuum Debugger' plugin is installed.`);
|
|
25
29
|
SweeperP2pInstance.onReceiveMapData = onReceiveMapData;
|
|
@@ -29,15 +33,14 @@ const useP2PDataStream = (devId, onReceiveMapData, onReceivePathData, opt) => {
|
|
|
29
33
|
SweeperP2pInstance.removeP2pDownloadEvent();
|
|
30
34
|
};
|
|
31
35
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
isInitP2p();
|
|
36
|
+
SweeperP2pInstance.initP2pSdk(devId).then(() => {
|
|
37
|
+
connectP2p();
|
|
38
|
+
});
|
|
37
39
|
onEnterBackground();
|
|
38
40
|
onEnterForeground();
|
|
39
41
|
return () => {
|
|
40
42
|
unmount();
|
|
43
|
+
SweeperP2pInstance.deInitP2PSDK();
|
|
41
44
|
timer && clearInterval(timer);
|
|
42
45
|
};
|
|
43
46
|
}, []);
|
|
@@ -45,22 +48,21 @@ const useP2PDataStream = (devId, onReceiveMapData, onReceivePathData, opt) => {
|
|
|
45
48
|
/**
|
|
46
49
|
* p2p连接
|
|
47
50
|
*/
|
|
48
|
-
const
|
|
49
|
-
log4js.info('hooks has been started
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
SweeperP2pInstance.
|
|
51
|
+
const connectP2p = async () => {
|
|
52
|
+
log4js.info('hooks has been started connectP2p');
|
|
53
|
+
SweeperP2pInstance.isConnecting = true;
|
|
54
|
+
SweeperP2pInstance.connectDevice(() => {
|
|
55
|
+
isInit.current = true;
|
|
56
|
+
SweeperP2pInstance.startObserverSweeperDataByP2P(1, devId, onReceiveMapData, onReceivePathData, onReceiveAIPicData, onReceiveAIPicHDData);
|
|
57
|
+
offSessionStatusChange.current = SweeperP2pInstance.onSessionStatusChange(SweeperP2pInstance.sessionStatusCallback);
|
|
58
|
+
}, () => {
|
|
59
|
+
SweeperP2pInstance.reconnectP2p(() => {
|
|
60
|
+
isInit.current = true;
|
|
54
61
|
SweeperP2pInstance.startObserverSweeperDataByP2P(1, devId, onReceiveMapData, onReceivePathData, onReceiveAIPicData, onReceiveAIPicHDData);
|
|
62
|
+
// 这里失败重连需要注册断开重连的事件
|
|
55
63
|
offSessionStatusChange.current = SweeperP2pInstance.onSessionStatusChange(SweeperP2pInstance.sessionStatusCallback);
|
|
56
|
-
}, () => {
|
|
57
|
-
SweeperP2pInstance.reconnectP2p(() => {
|
|
58
|
-
SweeperP2pInstance.startObserverSweeperDataByP2P(1, devId, onReceiveMapData, onReceivePathData, onReceiveAIPicData, onReceiveAIPicHDData);
|
|
59
|
-
// 这里失败重连需要注册断开重连的事件
|
|
60
|
-
offSessionStatusChange.current = SweeperP2pInstance.onSessionStatusChange(SweeperP2pInstance.sessionStatusCallback);
|
|
61
|
-
});
|
|
62
64
|
});
|
|
63
|
-
}
|
|
65
|
+
});
|
|
64
66
|
};
|
|
65
67
|
|
|
66
68
|
/**
|
|
@@ -79,7 +81,7 @@ const useP2PDataStream = (devId, onReceiveMapData, onReceivePathData, opt) => {
|
|
|
79
81
|
}
|
|
80
82
|
clearTimeout(timer.current);
|
|
81
83
|
timer.current = null;
|
|
82
|
-
},
|
|
84
|
+
}, 10 * 1000);
|
|
83
85
|
}
|
|
84
86
|
});
|
|
85
87
|
};
|
|
@@ -94,8 +96,7 @@ const useP2PDataStream = (devId, onReceiveMapData, onReceivePathData, opt) => {
|
|
|
94
96
|
offSessionStatusChange.current();
|
|
95
97
|
offSessionStatusChange.current = null;
|
|
96
98
|
}
|
|
97
|
-
|
|
98
|
-
await SweeperP2pInstance.deInitP2PSDK();
|
|
99
|
+
SweeperP2pInstance.stopObserverSweeperDataByP2P();
|
|
99
100
|
};
|
|
100
101
|
|
|
101
102
|
/**
|
|
@@ -104,10 +105,14 @@ const useP2PDataStream = (devId, onReceiveMapData, onReceivePathData, opt) => {
|
|
|
104
105
|
const onEnterForeground = () => {
|
|
105
106
|
ty.onAppShow(() => {
|
|
106
107
|
log4js.info('hooks onAppShow');
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
setTimeout(() => {
|
|
109
|
+
var _ty$p2p$isP2PActiveSy, _ty$p2p;
|
|
110
|
+
if (!isInit.current || !((_ty$p2p$isP2PActiveSy = (_ty$p2p = ty.p2p).isP2PActiveSync) !== null && _ty$p2p$isP2PActiveSy !== void 0 && _ty$p2p$isP2PActiveSy.call(_ty$p2p, {
|
|
111
|
+
deviceId: devId
|
|
112
|
+
}))) {
|
|
113
|
+
connectP2p();
|
|
114
|
+
}
|
|
115
|
+
}, 500);
|
|
111
116
|
});
|
|
112
117
|
};
|
|
113
118
|
return {
|