mirror of
https://github.com/koush/scrypted.git
synced 2026-02-03 06:03:27 +00:00
remote: add reconnect and disable WIP mediaobject converter (#637)
This commit is contained in:
12
plugins/remote/package-lock.json
generated
12
plugins/remote/package-lock.json
generated
@@ -19,23 +19,23 @@
|
||||
},
|
||||
"../../packages/client": {
|
||||
"name": "@scrypted/client",
|
||||
"version": "1.1.39",
|
||||
"version": "1.1.43",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@scrypted/types": "^0.2.65",
|
||||
"@scrypted/types": "^0.2.76",
|
||||
"axios": "^0.25.0",
|
||||
"engine.io-client": "^6.2.2",
|
||||
"engine.io-client": "^6.4.0",
|
||||
"rimraf": "^3.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/ip": "^1.1.0",
|
||||
"@types/node": "^17.0.17",
|
||||
"typescript": "^4.7.4"
|
||||
"@types/node": "^18.14.2",
|
||||
"typescript": "^4.9.5"
|
||||
}
|
||||
},
|
||||
"../../sdk": {
|
||||
"name": "@scrypted/sdk",
|
||||
"version": "0.2.70",
|
||||
"version": "0.2.85",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@babel/preset-typescript": "^7.18.6",
|
||||
|
||||
@@ -55,13 +55,17 @@ class ScryptedRemoteInstance extends ScryptedDeviceBase implements DeviceProvide
|
||||
},
|
||||
});
|
||||
|
||||
fromMimeType: string = ""
|
||||
toMimeType: string = ""
|
||||
|
||||
constructor(nativeId: string) {
|
||||
super(nativeId);
|
||||
this.clearTryDiscoverDevices();
|
||||
|
||||
|
||||
this.fromMimeType = 'x-scrypted-remote/x-media-object-' + this.id;
|
||||
this.toMimeType = ScryptedMimeTypes.MediaObject;
|
||||
this.toMimeType = '*';
|
||||
sdk.mediaManager.addConverter(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -193,9 +197,11 @@ class ScryptedRemoteInstance extends ScryptedDeviceBase implements DeviceProvide
|
||||
});
|
||||
|
||||
this.client.onClose = () => {
|
||||
this.console.log('client killed')
|
||||
this.console.log('client killed, reconnecting in 60s');
|
||||
setTimeout(async () => await this.clearTryDiscoverDevices(), 60000);
|
||||
}
|
||||
|
||||
/* bjia56: since the MediaObject conversion isn't completely implemented, disable this for now
|
||||
const { rpcPeer } = this.client;
|
||||
const map = new WeakMap<RemoteMediaObject, MediaObject>();
|
||||
rpcPeer.nameDeserializerMap.set('MediaObject', {
|
||||
@@ -215,11 +221,13 @@ class ScryptedRemoteInstance extends ScryptedDeviceBase implements DeviceProvide
|
||||
return rmo;
|
||||
},
|
||||
});
|
||||
*/
|
||||
|
||||
this.console.log(`Connected to remote Scrypted server. Remote server version: ${this.client.serverVersion}`)
|
||||
}
|
||||
|
||||
async convert(data: RemoteMediaObject, fromMimeType: string, toMimeType: string, options?: MediaObjectOptions): Promise<any> {
|
||||
if (toMimeType === 'x-scrypted-remote/x-media-object')
|
||||
if (toMimeType.startsWith('x-scrypted-remote/x-media-object'))
|
||||
return data;
|
||||
let ret = await this.client.mediaManager.convertMediaObject(data, toMimeType);
|
||||
if (toMimeType === ScryptedMimeTypes.FFmpegInput) {
|
||||
@@ -298,9 +306,9 @@ class ScryptedRemoteInstance extends ScryptedDeviceBase implements DeviceProvide
|
||||
|
||||
// first register the top level devices, then register the remaining
|
||||
// devices by provider id
|
||||
await deviceManager.onDevicesChanged(<DeviceManifest>{
|
||||
devices: providerDeviceMap.get(this.nativeId),
|
||||
providerNativeId: this.nativeId,
|
||||
// top level devices are discovered one by one to avoid clobbering
|
||||
providerDeviceMap.get(this.nativeId).map(async device => {
|
||||
await deviceManager.onDeviceDiscovered(device);
|
||||
});
|
||||
for (let [providerNativeId, devices] of providerDeviceMap) {
|
||||
await deviceManager.onDevicesChanged(<DeviceManifest>{
|
||||
|
||||
Reference in New Issue
Block a user