chore: Update monitor service and instance controller

Refactored the instance controller and monitor service to improve the connection handling and management of WhatsApp instances.

- Modified the instance controller to close the WebSocket connection and restart the instance instead of reloading it.
- Updated the monitor service to remove the instance from the `waInstances` object and emit an event to clean up and remove the instance data.
- Fixed an issue where the instance was not being removed from the `waInstances` object.

Files affected:
- CHANGELOG.md
- src/api/controllers/instance.controller.ts
- src/api/services/monitor.service.ts
This commit is contained in:
Davidson Gomes 2024-07-30 11:15:21 -03:00
parent 95bc5e6b21
commit 66814b403e
3 changed files with 12 additions and 13 deletions

View File

@ -1,8 +1,8 @@
# 2.0.4-beta (beta) # 2.0.4-rc (release candidate)
### Features ### Features
* New manager v2.0.0 * New manager v2.0
### Fixed ### Fixed

View File

@ -594,11 +594,11 @@ export class InstanceController {
switch (state) { switch (state) {
case 'open': case 'open':
if (this.configService.get<Chatwoot>('CHATWOOT').ENABLED) instance.clearCacheChatwoot(); if (this.configService.get<Chatwoot>('CHATWOOT').ENABLED) instance.clearCacheChatwoot();
// await instance.reloadConnection();
await instance.client?.ws?.close();
await delay(2000);
return await this.connectionState({ instanceName }); this.logger.info('Connection closed, restarting instance' + instanceName);
instance.client?.ws?.close();
instance.client?.end(new Error('restart'));
return await this.connectToWhatsapp({ instanceName });
default: default:
return await this.connectionState({ instanceName }); return await this.connectionState({ instanceName });
} }
@ -690,7 +690,6 @@ export class InstanceController {
this.logger.error(error); this.logger.error(error);
} }
delete this.waMonitor.waInstances[instanceName];
this.eventEmitter.emit('remove.instance', instanceName, 'inner'); this.eventEmitter.emit('remove.instance', instanceName, 'inner');
return { status: 'SUCCESS', error: false, response: { message: 'Instance deleted' } }; return { status: 'SUCCESS', error: false, response: { message: 'Instance deleted' } };
} catch (error) { } catch (error) {

View File

@ -336,18 +336,18 @@ export class WAMonitoringService {
private removeInstance() { private removeInstance() {
this.eventEmitter.on('remove.instance', async (instanceName: string) => { this.eventEmitter.on('remove.instance', async (instanceName: string) => {
try {
this.waInstances[instanceName] = undefined;
} catch (error) {
this.logger.error(error);
}
try { try {
this.cleaningUp(instanceName); this.cleaningUp(instanceName);
this.cleaningStoreData(instanceName); this.cleaningStoreData(instanceName);
} finally { } finally {
this.logger.warn(`Instance "${instanceName}" - REMOVED`); this.logger.warn(`Instance "${instanceName}" - REMOVED`);
} }
try {
delete this.waInstances[instanceName];
} catch (error) {
this.logger.error(error);
}
}); });
this.eventEmitter.on('logout.instance', async (instanceName: string) => { this.eventEmitter.on('logout.instance', async (instanceName: string) => {
try { try {