Allow changing the socketURL post init Fixes #470

This commit is contained in:
Erik 2017-05-28 15:24:39 -04:00
parent 17bec21ad1
commit 30e4f59a16
No known key found for this signature in database
GPG Key ID: 4930B7C5FBC1A69D
2 changed files with 17 additions and 16 deletions

View File

@ -147,7 +147,7 @@ extension SocketEnginePollable {
DefaultSocketLogger.Logger.log("Got polling response", type: "SocketEnginePolling")
if let str = String(data: data!, encoding: String.Encoding.utf8) {
if let str = String(data: data!, encoding: .utf8) {
this.parsePollingMessage(str)
}

View File

@ -33,9 +33,6 @@ import Foundation
open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, SocketParsable {
// MARK: Properties
/// The URL of the socket.io server. This is set in the initializer.
public let socketURL: URL
/// The engine for this client.
public private(set) var engine: SocketEngineSpec?
@ -78,6 +75,18 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
return engine?.sid
}
/// The URL of the socket.io server.
///
/// If changed after calling `init`, `forceNew` must be set to `true`, or it will only connect to the url set in the
/// init.
public var socketURL: URL
var ackHandlers = SocketAckManager()
var waitingPackets = [SocketPacket]()
private(set) var currentAck = -1
private(set) var reconnectAttempts = -1
private let logType = "SocketIOClient"
private var anyHandler: ((SocketAnyEvent) -> Void)?
@ -85,12 +94,6 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
private var handlers = [SocketEventHandler]()
private var reconnecting = false
private(set) var currentAck = -1
private(set) var reconnectAttempts = -1
var ackHandlers = SocketAckManager()
var waitingPackets = [SocketPacket]()
// MARK: Initializers
/// Type safe way to create a new SocketIOClient. `opts` can be omitted.
@ -149,13 +152,11 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
// MARK: Methods
private func addEngine() -> SocketEngineSpec {
private func addEngine() {
DefaultSocketLogger.Logger.log("Adding engine", type: logType, args: "")
engine?.client = nil
engine = SocketEngine(client: self, url: socketURL, config: config)
return engine!
}
/// Connect to the server.
@ -179,11 +180,11 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
status = .connecting
if engine == nil || forceNew {
addEngine().connect()
} else {
engine?.connect()
addEngine()
}
engine?.connect()
guard timeoutAfter != 0 else { return }
handleQueue.asyncAfter(deadline: DispatchTime.now() + Double(timeoutAfter)) {[weak self] in