mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 06:03:45 +01:00
[web] ensure that only a single socket.io transport is connected (#24422)
GitOrigin-RevId: 9397b0c85f0a889385d4761945e976ada7aa537b
This commit is contained in:
@@ -25,8 +25,6 @@ const MAX_RECONNECT_GRACEFULLY_INTERVAL_MS = getMeta(
|
||||
'ol-maxReconnectGracefullyIntervalMs'
|
||||
)
|
||||
|
||||
const BEFORE_RECONNECT = 'beforeReconnect'
|
||||
|
||||
const MAX_RETRY_CONNECT = 5
|
||||
const RETRY_WEBSOCKET = 3
|
||||
|
||||
@@ -117,7 +115,7 @@ export class ConnectionManager extends EventTarget {
|
||||
}
|
||||
|
||||
socket.on('connect', () => this.onConnect())
|
||||
socket.on('disconnect', (reason: string) => this.onDisconnect(reason))
|
||||
socket.on('disconnect', () => this.onDisconnect())
|
||||
socket.on('error', err => this.onConnectError(err))
|
||||
socket.on('connect_failed', err => this.onConnectError(err))
|
||||
socket.on('joinProjectResponse', body => this.onJoinProjectResponse(body))
|
||||
@@ -276,8 +274,7 @@ export class ConnectionManager extends EventTarget {
|
||||
this.websocketFailureCount = 0
|
||||
}
|
||||
|
||||
private onDisconnect(reason: string) {
|
||||
if (reason === BEFORE_RECONNECT) return // triggered from reconnect, ignore.
|
||||
private onDisconnect() {
|
||||
this.connectionAttempt = null
|
||||
if (this.externalHeartbeatInterval) {
|
||||
window.clearInterval(this.externalHeartbeatInterval)
|
||||
@@ -446,7 +443,7 @@ export class ConnectionManager extends EventTarget {
|
||||
if (this.socket.socket.connecting || this.socket.socket.connected) {
|
||||
// Ensure the old transport has been cleaned up.
|
||||
// Socket.disconnect() does not accept a parameter. Go one level deeper.
|
||||
this.socket.socket.onDisconnect(BEFORE_RECONNECT)
|
||||
this.socket.forceDisconnectWithoutEvent()
|
||||
}
|
||||
this.socket.socket.connect()
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@ export type Socket = {
|
||||
connected: boolean
|
||||
connecting: boolean
|
||||
connect(): void
|
||||
onDisconnect(reason: string): void
|
||||
disconnect(): void
|
||||
sessionid: string
|
||||
transport?: {
|
||||
@@ -43,4 +42,5 @@ export type Socket = {
|
||||
transports: string[]
|
||||
}
|
||||
disconnect(): void
|
||||
forceDisconnectWithoutEvent(): void
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user