-
Notifications
You must be signed in to change notification settings - Fork 147
Description
I'm following the example for disconnecting from a socket when the app is backgrounded for my SwiftUI app. After calling socket.disconnect() using v5.3.3 of this library, I reliably get the following error message at PhoenixTransport.swift#L293 Error when receiving Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://phoenix-chat.fly.dev/socket/websocket?vsn=2.0.0, NSErrorFailingURLKey=wss://phoenix-chat.fly.dev/socket/websocket?vsn=2.0.0}.
Here is an example app that doesn't involve joining any channels for simplicity, though I still get this error message when channels have been joined & left too.
I would expect no error message in this case since the socket has been intentionally closed.
struct ContentView: View {
let socket: Socket = .init("https://phoenix-chat.fly.dev/socket/websocket")
@Environment(\.scenePhase) var scenePhase
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.onAppear {
socket.onOpen {
print("Socket opened")
}
socket.onClose { code, reason in
print("Socket closed \(code) \(reason)")
}
}.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
socket.connect()
}
if newPhase == .background {
socket.disconnect(code: .normal, reason: "Backgrounded", callback: nil)
}
}
.padding()
}
Here are the full logs from opening the app, backgrounding it, and re-opening it.
Socket opened
Socket closed 1000 Optional("Backgrounded")
Error when receiving Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://phoenix-chat.fly.dev/socket/websocket?vsn=2.0.0, NSErrorFailingURLKey=wss://phoenix-chat.fly.dev/socket/websocket?vsn=2.0.0}
Socket opened