socketio / socket.io-client-swift

Other
5.22k stars 845 forks source link

extraHeaders missing #1409

Open mediavariance opened 2 years ago

mediavariance commented 2 years ago

I'm unable to get an authorization header to work. This is on master, and I tried all of the recent tags on this project. I verified that the Authorization header is not reaching the web socket server.

I've tried:

Any ideas?

import Foundation
import SocketIO

class DeviceInviteService: ObservableObject {
    private var token: String

    private let manager: SocketManager
    private var socket: SocketIOClient!
    private var nameSpace = "App\\Events\\"

    init( token: String ) {
        self.token = token

        self.manager = SocketManager(
            socketURL: URL(string: "wss://laravel-echo-server/socket.io")!,
            config:
                [
                    .log(true),
                    .version(.two),
                    .compress,
                    .reconnects(true),
                    .reconnectAttempts(-1),
                    .forceWebsockets(true),
                    .forceNew(true),
                    .forcePolling(true),
                    .secure(true),
                    .extraHeaders(["Authorization": "Bearer \(token)"])
                ]
        )
    }

    func connect( token: String, deviceID: Int ) {
        socket = manager.defaultSocket
        socket.connect()

        socket.on(clientEvent: .connect) {data, ack in
            let channelData = ["channel": "private-App.Models.MyModel.\(deviceID)"]

            self.socket.emit("subscribe", channelData) {
                self.socket.onAny
                {
                    print("Sockets: Got event: \($0.event), with items: \($0.items)")
                }

                self.socket.on("messages") { (dataArray, socketAck) -> Void in
                    print("Sockets: Received Response!")
                }
            }
        }
    }
}
BH102 commented 2 years ago

I am also having same issue. Did you solve it?

BH102 commented 2 years ago

I have solved it, I'm also using laravel-echo-server in my case it was because the middleware.