Long Poll Request Error in Swift when Connecting to SocketIO

I am attempting to connect to Online-Go SocketIO in Swift using Starscream Websocket(https://github.com/daltoniam/Starscream). My URL and values passed in are correct; however, after running my code, I received an “error during long pull request” log. I wonder how should I fix the problem, thank you so much!

func connectToGame(tokenType: String, accessToken: String, gameID: Int, playerID: Int, chat: Bool) {
    private var manager = SocketManager(socketURL: URL(string: "https://online-go.com/socket.io")!, config: [.secure(true), .log(true), .compress])
    let socket = manager.defaultSocket

    socket.on(clientEvent: .connect) { data, ack in
        print("socket connected")
        socket.emitWithAck("authenticate", "\(tokenType)  \(accessToken)").timingOut(after: 5) { dataArray in
            print(dataArray)
        
        socket.emit("game/connect", ["game_id": gameID, "player_id": playerID, "chat": chat])
        }
    }
    socket.connect()
}

The log message after running the code is like the following:

2021-09-30 22:30:26.429146-0700 QidianGo[19329:699465] LOG SocketIOClient{/}: Adding handler for event: connect
2021-09-30 22:30:26.430411-0700 QidianGo[19329:699465] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2021-09-30 22:30:26.430829-0700 QidianGo[19329:699465] LOG SocketIOClient{/}: Joining namespace /
2021-09-30 22:30:26.431202-0700 QidianGo[19329:699465] LOG SocketManager: Tried connecting socket when engine isn't open. Connecting
2021-09-30 22:30:26.431421-0700 QidianGo[19329:699465] LOG SocketManager: Adding engine
2021-09-30 22:30:26.434657-0700 QidianGo[19329:699465] LOG SocketIOClient{/}: Adding handler for event: connect
2021-09-30 22:30:26.434780-0700 QidianGo[19329:699694] LOG SocketEngine: Starting engine. Server: https://online-go.com/socket.io
2021-09-30 22:30:26.434972-0700 QidianGo[19329:699694] LOG SocketEngine: Handshaking
2021-09-30 22:30:26.435002-0700 QidianGo[19329:699465] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2021-09-30 22:30:26.435213-0700 QidianGo[19329:699465] LOG SocketIOClient{/}: Joining namespace /
2021-09-30 22:30:26.435474-0700 QidianGo[19329:699465] LOG SocketManager: Tried connecting socket when engine isn't open. Connecting
2021-09-30 22:30:26.435642-0700 QidianGo[19329:699465] LOG SocketManager: Tried connecting an already active socket
2021-09-30 22:30:26.437613-0700 QidianGo[19329:699694] LOG SocketEnginePolling: Doing polling GET https://online-go.com/socket.io/?transport=polling&b64=1&EIO=4
2021-09-30 22:30:26.470849-0700 QidianGo[19329:699465] LOG SocketManager: Manager is being released
2021-09-30 22:30:26.555491-0700 QidianGo[19329:699700] ERROR SocketEnginePolling: Error during long poll request
2021-09-30 22:30:26.555817-0700 QidianGo[19329:699700] ERROR SocketEngine: Error
2021-09-30 22:30:26.556624-0700 QidianGo[19329:699696] LOG SocketEngine: Engine is being released

In log it says you are using polling transport. Need to use websocket.

May I ask what should I do to change the connection to WebSocket? Thank you so much!

After quick search in docs, I’m guessing add .forceWebsockets(true) to config?
Sorry, haven’t used this library or Swift before.

1 Like

It worked! Thank you so much!!!