Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Socket.io swift client getting reconnected multiple time automatically

I'm using Socket.IO-Client-Swift', '~> 13.1.0' for my app. I have successfully connected my app with Socket server but the problem is, it is getting reconnected multiple time. As a result, maybe i'm unable to emit anything to the server. Can anyone help me with this?

This is my code:

class SocketIOManager: NSObject {

var locationReceiverDelegate: LocationReceiverDelegate?
static let shared = SocketIOManager()
let manager = SocketManager(socketURL: URL(string: "server-url")!, config: [.log(true), .connectParams(["token" : "token-string"])])

var socket : SocketIOClient!


override init() {
    super.init()

    socket = manager.defaultSocket
    self.connectSocket() 
}

func connectSocket() {

    socket.on(clientEvent: .connect) {data, ack in
        print("socket connected")
    }

    self.socket.on("connected") { ( dataArray, ack)  in
        print("dataArray",dataArray)
    }

    self.socket.on("error") { (data, ack) in
        print("error-->", data)
    }

    self.socket.on("location::share.error") { (data, ack) in
        print("location::share.error-->", data)
    }


    self.socket.on("location::receive") { (data, ack) in

        print("location::receive-->", data[0])

    }

}

func establishConnection() {
    print("in connect socket")
    socket.connect()
}

func disconnectSocket() {
    socket.disconnect()
    print("in disconnect socket")
}

func updateCurrentLocation(myLocation: CLLocation) {

    print(myLocation.coordinate.latitude)
    print(myLocation.coordinate.longitude)
    print(myLocation.course)


    let data : Dictionary<String,Any> = [
        "latitude": myLocation.coordinate.latitude,
        "longitude": myLocation.coordinate.latitude,
        "angle": myLocation.course
    ]
    let jsonData = try! JSONSerialization.data(withJSONObject: data)
    print(jsonData)
    let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)

    print((String(describing: jsonString!)))
    socket.emit("location::share", "\(String(describing: jsonString!))")

}

}

like image 374
Mahadhi Hassan Chowdhury Avatar asked Aug 19 '26 15:08

Mahadhi Hassan Chowdhury


1 Answers

socket.emit(Your_Key, with: [Your_Data])

maybe this is how your server looking for data!! (emit array of your data). check your socket status before emitting data.

like image 91
S.M.Moinuddin. Shuvo Avatar answered Aug 21 '26 04:08

S.M.Moinuddin. Shuvo