From 13870c63b065b9e800fec0ed831cfcfdc7ab5ba7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 9 Jun 2023 12:47:36 +0900 Subject: add note --- packages/backend/src/server/api/StreamingApiServerService.ts | 1 + 1 file changed, 1 insertion(+) (limited to 'packages/backend/src/server/api/StreamingApiServerService.ts') diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index 893dfe956e..a1758fd051 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -139,6 +139,7 @@ export class StreamingApiServerService { }); }); + // 一定期間通信が無いコネクションは実際には切断されている可能性があるため定期的にterminateする this.#cleanConnectionsIntervalId = setInterval(() => { const now = Date.now(); for (const [connection, lastActive] of this.#connections.entries()) { -- cgit v1.2.3-freya From 308ab8f1777d286d694f44874c6d4a8ef47fba68 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 9 Jun 2023 16:11:28 +0900 Subject: chore --- packages/backend/src/server/api/StreamingApiServerService.ts | 1 + 1 file changed, 1 insertion(+) (limited to 'packages/backend/src/server/api/StreamingApiServerService.ts') diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index a1758fd051..2e554c9ad1 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -128,6 +128,7 @@ export class StreamingApiServerService { ev.removeAllListeners(); stream.dispose(); this.redisForSub.off('message', onRedisMessage); + this.#connections.delete(connection); if (userUpdateIntervalId) clearInterval(userUpdateIntervalId); }); -- cgit v1.2.3-freya From 6182a1cb2c80cce573a17193e9309fbbbce3b08c Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 9 Jun 2023 17:07:57 +0900 Subject: enhance(backend): WebSocketのPing/Pongをプロトコル制御フレームの物で判別する MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve #10969 --- packages/backend/src/server/api/StreamingApiServerService.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'packages/backend/src/server/api/StreamingApiServerService.ts') diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index 2e554c9ad1..d1394d6d76 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -132,11 +132,8 @@ export class StreamingApiServerService { if (userUpdateIntervalId) clearInterval(userUpdateIntervalId); }); - connection.on('message', async (data) => { + connection.on('pong', () => { this.#connections.set(connection, Date.now()); - if (data.toString() === 'ping') { - connection.send('pong'); - } }); }); @@ -144,12 +141,14 @@ export class StreamingApiServerService { this.#cleanConnectionsIntervalId = setInterval(() => { const now = Date.now(); for (const [connection, lastActive] of this.#connections.entries()) { - if (now - lastActive > 1000 * 60 * 5) { + if (now - lastActive > 1000 * 60 * 2) { connection.terminate(); this.#connections.delete(connection); + } else { + connection.ping(); } } - }, 1000 * 60 * 5); + }, 1000 * 60); } @bindThis -- cgit v1.2.3-freya