fix(core): update

This commit is contained in:
2022-01-19 07:01:58 +01:00
parent 6fdf0d9955
commit 489ad9284b
10 changed files with 68 additions and 53 deletions

View File

@ -61,8 +61,8 @@ export class Smartsocket {
await plugins.smartdelay.delayFor(1000);
this.socketConnections.forEach((socketObjectArg: SocketConnection) => {
if (socketObjectArg) {
logger.log('info', `disconnect socket with >>alias ${socketObjectArg.alias}`);
socketObjectArg.socket.disconnect(true);
logger.log('info', `disconnecting socket with >>alias ${socketObjectArg.alias} due to server stop...`);
socketObjectArg.disconnect();
}
});
this.socketConnections.wipe();
@ -124,13 +124,14 @@ export class Smartsocket {
});
logger.log('info', 'Socket connected. Trying to authenticate...');
this.socketConnections.add(socketConnection);
const disconnectSubscription = socketConnection.eventSubject.subscribe((eventArg) => {
if (eventArg === 'disconnected') {
this.socketConnections.remove(socketConnection);
disconnectSubscription.unsubscribe();
}
})
const disconnectSubscription = socketConnection.eventSubject.subscribe((eventArg) => {
if (eventArg === 'disconnected') {
this.socketConnections.remove(socketConnection);
disconnectSubscription.unsubscribe();
}
});
await socketConnection.authenticate();
await socketConnection.listenToFunctionRequests();
await socketConnection.socket.emit('serverFullyReactive');
}
}

View File

@ -138,11 +138,29 @@ export class SmartsocketClient {
logger.log('info', 'server requested authentication');
// lets register the authenticated event
this.socketConnection.socket.on('authenticated', () => {
this.socketConnection.socket.on('authenticated', async () => {
this.remoteShortId = requestAuthPayload.serverShortId;
logger.log('info', 'client is authenticated');
this.socketConnection.authenticated = true;
this.socketConnection.listenToFunctionRequests();
await this.socketConnection.listenToFunctionRequests();
});
this.socketConnection.socket.on('serverFullyReactive', async () => {
// lets take care of retagging
const oldTagStore = this.tagStore;
this.tagStoreSubscription?.unsubscribe();
for (const keyArg of Object.keys(this.tagStore)) {
this.socketConnection.addTag(this.tagStore[keyArg]);
}
this.tagStoreSubscription = this.socketConnection.tagStoreObservable.subscribe(
(tagStoreArg) => {
this.tagStore = tagStoreArg;
}
);
for (const tag of Object.keys(oldTagStore)) {
await this.addTag(oldTagStore[tag]);
}
done.resolve();
});
@ -163,16 +181,6 @@ export class SmartsocketClient {
// handle connection
this.socketConnection.socket.on('connect', async () => {
this.tagStoreSubscription?.unsubscribe();
for (const keyArg of Object.keys(this.tagStore)) {
this.socketConnection.addTag(this.tagStore[keyArg]);
}
this.tagStoreSubscription = this.socketConnection.tagStoreObservable.subscribe(
(tagStoreArg) => {
this.tagStore = tagStoreArg;
}
);
this.updateStatus('connected');
});
@ -194,6 +202,7 @@ export class SmartsocketClient {
* disconnect from the server
*/
public async disconnect() {
this.tagStoreSubscription?.unsubscribe();
if (this.socketConnection) {
await this.socketConnection.disconnect();
this.socketConnection = undefined;

View File

@ -95,6 +95,9 @@ export class SocketConnection {
this.tagStore[tagArg.id] = tagArg;
this.tagStoreObservable.next(this.tagStore);
const remoteSubscription = this.remoteTagStoreObservable.subscribe((remoteTagStore) => {
if (!remoteTagStore[tagArg.id]) {
return;
}
const localTagString = plugins.smartjson.stringify(tagArg);
const remoteTagString = plugins.smartjson.stringify(remoteTagStore[tagArg.id]);
if (localTagString === remoteTagString) {

View File

@ -32,8 +32,10 @@ export class SocketRole {
dataArg: ISocketConnectionAuthenticationObject,
referenceSmartsocket: Smartsocket | SmartsocketClient
): Promise<boolean> {
const targetPasswordHash = SocketRole.getSocketRoleByName(referenceSmartsocket, dataArg.role)
.passwordHash;
const targetPasswordHash = SocketRole.getSocketRoleByName(
referenceSmartsocket,
dataArg.role
).passwordHash;
const computedCompareHash = await plugins.isohash.sha256FromString(dataArg.password);
return targetPasswordHash === computedCompareHash;
}

View File

@ -77,5 +77,9 @@ export class SocketServer {
/**
* closes the server
*/
public async stop() {}
public async stop() {
if (this.httpServer) {
this.httpServer.close();
}
}
}