commit 9b99e0080477d4aea24da8fdee13b29885967bf6
parent a4d4ad72e643648c0d977c082195f55d41457ed0
Author: William Casarin <jb55@jb55.com>
Date: Sun, 7 May 2023 12:00:37 -0700
Reconnect on failed ping and remove reconnect timer
I think this does it
Diffstat:
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/damus/ContentView.swift b/damus/ContentView.swift
@@ -81,9 +81,6 @@ struct ContentView: View {
@SceneStorage("ContentView.filter_state") var filter_state : FilterState = .posts_and_replies
@State private var isSideBarOpened = false
@StateObject var home: HomeModel = HomeModel()
-
- // connect retry timer
- let timer = Timer.publish(every: 4, on: .main, in: .common).autoconnect()
let sub_id = UUID().description
@@ -393,9 +390,6 @@ struct ContentView: View {
self.active_sheet = nil
}
}
- .onReceive(timer) { n in
- self.damus_state?.pool.connect_to_disconnected()
- }
.onReceive(handle_notify(.new_mutes)) { notif in
home.filter_events()
}
diff --git a/damus/Nostr/RelayConnection.swift b/damus/Nostr/RelayConnection.swift
@@ -57,8 +57,13 @@ final class RelayConnection {
func ping() {
socket.ping { err in
- if err != nil {
+ if err == nil {
self.last_pong = .now
+ } else {
+ print("pong failed, reconnecting \(self.url.id)")
+ self.isConnected = false
+ self.isConnecting = false
+ self.reconnect_with_backoff()
}
}
}