Merge pull request #2687 from overleaf/jpa-fix-failing-reconnect-caused-by-backend

[frontend] ConnectionManager: fix failing reconnects (caused by backend)

GitOrigin-RevId: f66e45fcb22849c2057b24eabde319ae7781ec51
This commit is contained in:
Jakob Ackermann 2020-03-30 12:19:48 +02:00 committed by Copybot
parent 4d67acc7f5
commit bdbbe1d596

View file

@ -270,6 +270,8 @@ The editor will refresh in automatically in 10 seconds.\
this.$scope.connection.stillReconnecting = true
}
}, 1000)
} else if (state === 'reconnectFailed') {
// reconnect attempt failed
} else if (state === 'authenticating') {
// socket connection has been established, trying to authenticate
} else if (state === 'joining') {
@ -507,6 +509,24 @@ Something went wrong connecting to your project. Please refresh if this continue
}
this.updateConnectionManagerState('reconnecting')
sl_console.log('[ConnectionManager] Starting new connection')
const removeHandler = () => {
this.ide.socket.removeListener('error', handleFailure)
this.ide.socket.removeListener('connect', handleSuccess)
}
const handleFailure = () => {
sl_console.log('[ConnectionManager] tryReconnect: failed')
removeHandler()
this.updateConnectionManagerState('reconnectFailed')
this.tryReconnectWithRateLimit({ force: true })
}
const handleSuccess = () => {
sl_console.log('[ConnectionManager] tryReconnect: success')
removeHandler()
}
this.ide.socket.on('error', handleFailure)
this.ide.socket.on('connect', handleSuccess)
// use socket.io connect() here to make a single attempt, the
// reconnect() method makes multiple attempts
this.ide.socket.socket.connect()