Even more aggressive reconnects

Sometimes it gets stuck in a "reconnecting" state. We'll retry even
these connections if the last connection attempt is too old.
This commit is contained in:
William Casarin
2022-10-17 16:17:05 -07:00
parent eb99e6c323
commit c4206883f2
3 changed files with 16 additions and 9 deletions

View File

@@ -35,12 +35,12 @@ class RelayConnection: WebSocketDelegate {
self.disconnect()
} else {
// we're already disconnected, so just connect
self.connect()
self.connect(force: true)
}
}
func connect(){
if self.isConnected || self.isConnecting {
func connect(force: Bool = false){
if !force && (self.isConnected || self.isConnecting) {
return
}

View File

@@ -81,11 +81,18 @@ class RelayPool {
func connect_to_disconnected() {
for relay in relays {
let c = relay.connection
if relay.is_broken || c.isReconnecting || c.isConnecting || c.isConnected {
let is_connecting = c.isReconnecting || c.isConnecting
if is_connecting && (Date.now.timeIntervalSince1970 - c.last_connection_attempt) > 10 {
print("stale connection detected (\(relay.descriptor.url.absoluteString)). retrying...")
relay.connection.connect(force: true)
} else if relay.is_broken || is_connecting || c.isConnected {
continue
} else {
relay.connection.reconnect()
}
relay.connection.reconnect()
}
}