diff --git a/packages/core/src/agent/TransportService.ts b/packages/core/src/agent/TransportService.ts index a8c61e2af1..4095cb7e9b 100644 --- a/packages/core/src/agent/TransportService.ts +++ b/packages/core/src/agent/TransportService.ts @@ -13,6 +13,14 @@ export class TransportService { public transportSessionTable: TransportSessionTable = {} public saveSession(session: TransportSession) { + if (session.connectionId) { + const oldSessions = this.getExistingSessionsForConnectionIdAndType(session.connectionId, session.type) + oldSessions.forEach((oldSession) => { + if (oldSession) { + this.removeSession(oldSession) + } + }) + } this.transportSessionTable[session.id] = session } @@ -40,6 +48,12 @@ export class TransportService { public removeSession(session: TransportSession) { delete this.transportSessionTable[session.id] } + + private getExistingSessionsForConnectionIdAndType(connectionId: string, type: string) { + return Object.values(this.transportSessionTable).filter( + (session) => session?.connectionId === connectionId && session.type === type + ) + } } interface TransportSessionTable {