Skip to content

"Socket is not connected" error after backgrounding #258

@KaylaBrady

Description

@KaylaBrady

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions