From 2200972f4dbfaa620ad5b8e11be2c2ba2669a878 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 28 Aug 2016 08:29:00 -0400 Subject: [PATCH 1/2] Fix socketio/socket.io-client-swift#472 --- Source/SocketIOClient.swift | 43 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/Source/SocketIOClient.swift b/Source/SocketIOClient.swift index 3cc5fa4..98a825b 100644 --- a/Source/SocketIOClient.swift +++ b/Source/SocketIOClient.swift @@ -67,7 +67,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable return nsp + "#" + (engine?.sid ?? "") } - /// Type safe way to create a new SocketIOClient. opts can be omitted + /// Type safe way to create a new SocketIOClient. config can be omitted public init(socketURL: NSURL, config: SocketIOClientConfiguration = []) { self.config = config self.socketURL = socketURL @@ -150,12 +150,12 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable let time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeoutAfter) * Int64(NSEC_PER_SEC)) dispatch_after(time, handleQueue) {[weak self] in - if let this = self where this.status != .Connected && this.status != .Disconnected { - this.status = .Disconnected - this.engine?.disconnect("Connect timeout") - - handler?() - } + guard let this = self where this.status != .Connected && this.status != .Disconnected else { return } + + this.status = .Disconnected + this.engine?.disconnect("Connect timeout") + + handler?() } } @@ -163,20 +163,20 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable currentAck += 1 return {[weak self, ack = currentAck] timeout, callback in - if let this = self { - dispatch_sync(this.ackQueue) { - this.ackHandlers.addAck(ack, callback: callback) - } - + guard let this = self else { return } + + dispatch_sync(this.ackQueue) { + this.ackHandlers.addAck(ack, callback: callback) + } + + + this._emit(items, ack: ack) + + if timeout != 0 { + let time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeout * NSEC_PER_SEC)) - this._emit(items, ack: ack) - - if timeout != 0 { - let time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeout * NSEC_PER_SEC)) - - dispatch_after(time, this.ackQueue) { - this.ackHandlers.timeoutAck(ack, onQueue: this.handleQueue) - } + dispatch_after(time, this.ackQueue) { + this.ackHandlers.timeoutAck(ack, onQueue: this.handleQueue) } } } @@ -196,6 +196,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable DefaultSocketLogger.Logger.log("Disconnected: %@", type: logType, args: reason) + reconnecting = false status = .Disconnected // Make sure the engine is actually dead. @@ -205,8 +206,6 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable /// Disconnects the socket. public func disconnect() { - assert(status != .NotConnected, "Tried closing a NotConnected client") - DefaultSocketLogger.Logger.log("Closing socket", type: logType) didDisconnect("Disconnect") From cf12865aa034dd5529b5cb516a18cad874670e1b Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 29 Aug 2016 05:10:03 -0400 Subject: [PATCH 2/2] fix sid bug --- Socket.IO-Client-Swift.podspec | 4 ++-- Source/SocketEngine.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Socket.IO-Client-Swift.podspec b/Socket.IO-Client-Swift.podspec index de04093..1ccaf4b 100644 --- a/Socket.IO-Client-Swift.podspec +++ b/Socket.IO-Client-Swift.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Socket.IO-Client-Swift" s.module_name = "SocketIOClientSwift" - s.version = "7.0.1" + s.version = "7.0.2" s.summary = "Socket.IO-client for iOS and OS X" s.description = <<-DESC Socket.IO-client for iOS and OS X. @@ -14,7 +14,7 @@ Pod::Spec.new do |s| s.ios.deployment_target = '8.0' s.osx.deployment_target = '10.10' s.tvos.deployment_target = '9.0' - s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v7.0.1' } + s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v7.0.2' } s.source_files = "Source/**/*.swift" s.requires_arc = true # s.dependency 'Starscream', '~> 0.9' # currently this repo includes Starscream swift files diff --git a/Source/SocketEngine.swift b/Source/SocketEngine.swift index cdc94ab..753f750 100644 --- a/Source/SocketEngine.swift +++ b/Source/SocketEngine.swift @@ -359,7 +359,7 @@ public final class SocketEngine : NSObject, NSURLSessionDelegate, SocketEnginePo private func handleOpen(openData: String) { do { let json = try openData.toNSDictionary() - guard let sid = json[sid] as? String else { + guard let sid = json["sid"] as? String else { client?.engineDidError("Open packet contained no sid") return }