diff --git a/packages/frontend/src/stream.ts b/packages/frontend/src/stream.ts index e23937e6b6..57fae49d4b 100644 --- a/packages/frontend/src/stream.ts +++ b/packages/frontend/src/stream.ts @@ -68,14 +68,20 @@ export function useStream(): Misskey.IStream { if (timeoutHeartBeat) window.clearTimeout(timeoutHeartBeat); timeoutHeartBeat = window.setTimeout(heartbeat, HEART_BEAT_INTERVAL); - // send heartbeat right now when last send time is over HEART_BEAT_INTERVAL - document.addEventListener('visibilitychange', () => { + const target = () => { if ( !stream || document.visibilityState !== 'visible' || Date.now() - lastHeartbeatCall < HEART_BEAT_INTERVAL ) return; heartbeat(); + }; + + // send heartbeat right now when last send time is over HEART_BEAT_INTERVAL + document.addEventListener('visibilitychange', target); + + stream.on('_disconnected_', () => { + document.removeEventListener('visibilitychange', target); }); return stream;