diff --git a/services/real-time/app/js/Router.js b/services/real-time/app/js/Router.js index a7582be210..269c86698f 100644 --- a/services/real-time/app/js/Router.js +++ b/services/real-time/app/js/Router.js @@ -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 diff --git a/services/web/frontend/js/features/ide-react/connection/connection-manager.ts b/services/web/frontend/js/features/ide-react/connection/connection-manager.ts index 1190ad7f72..e67dcb7e6c 100644 --- a/services/web/frontend/js/features/ide-react/connection/connection-manager.ts +++ b/services/web/frontend/js/features/ide-react/connection/connection-manager.ts @@ -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