enhance(backend): WebSocketのPing/Pongをプロトコル制御フレームの物で判別する

Resolve #10969
This commit is contained in:
syuilo 2023-06-09 17:07:57 +09:00
parent 308ab8f177
commit 6182a1cb2c

View File

@ -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