[web] restrict external heartbeat/server ping to websocket transport (#23830)

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
GitOrigin-RevId: c03a78e2c05cd380b705bd14652060980682cb39
This commit is contained in:
Jakob Ackermann
2025-02-24 13:31:21 +00:00
committed by Copybot
parent 4d857b7937
commit 8138c76c1d
2 changed files with 11 additions and 5 deletions
+4 -1
View File
@@ -175,7 +175,10 @@ module.exports = Router = {
return
}
const useServerPing =
!!client.handshake?.query?.esh && !!client.handshake?.query?.ssp
!!client.handshake?.query?.esh &&
!!client.handshake?.query?.ssp &&
// No server ping with long-polling transports.
client.transport === 'websocket'
const isDebugging = !!client.handshake?.query?.debugging
const projectId = client.handshake?.query?.projectId
@@ -248,10 +248,13 @@ export class ConnectionManager extends EventTarget {
if (this.externalHeartbeatInterval) {
window.clearInterval(this.externalHeartbeatInterval)
}
this.externalHeartbeatInterval = window.setInterval(
() => this.sendExternalHeartbeat(),
15_000
)
if (this.socket.socket.transport?.name === 'websocket') {
// Do not enable external heartbeat on polling transports.
this.externalHeartbeatInterval = window.setInterval(
() => this.sendExternalHeartbeat(),
15_000
)
}
}
// Reset on success regardless of transport. We want to upgrade back to websocket on reconnect.
this.websocketFailureCount = 0