diff --git a/SocketIOClientSwift/SocketEngine.swift b/SocketIOClientSwift/SocketEngine.swift index 2eff23e..98543f9 100644 --- a/SocketIOClientSwift/SocketEngine.swift +++ b/SocketIOClientSwift/SocketEngine.swift @@ -102,19 +102,20 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { } } - public func close(fast fast: Bool) { - Logger.log("Engine is being closed. Fast: %@", type: logType, args: fast) + public func close() { + Logger.log("Engine is being closed.", type: logType) pingTimer?.invalidate() closed = true - ws?.disconnect() - - if fast || polling { - write("", withType: .Close, withData: nil) - client?.engineDidClose("Disconnect") + if websocket { + sendWebSocketMessage("", withType: .Close) + } else { + sendPollMessage("", withType: .Close) } - + + ws?.disconnect() + client?.engineDidClose("Disconnect") stopPolling() } diff --git a/SocketIOClientSwift/SocketEngineSpec.swift b/SocketIOClientSwift/SocketEngineSpec.swift index b696488..63b59f3 100644 --- a/SocketIOClientSwift/SocketEngineSpec.swift +++ b/SocketIOClientSwift/SocketEngineSpec.swift @@ -35,7 +35,7 @@ import Foundation init(client: SocketEngineClient, opts: NSDictionary?) - func close(fast fast: Bool) + func close() func open(opts: [String: AnyObject]?) func send(msg: String, withData datas: [NSData]?) func write(msg: String, withType type: SocketEnginePacketType, withData data: [NSData]?) diff --git a/SocketIOClientSwift/SocketIOClient.swift b/SocketIOClientSwift/SocketIOClient.swift index 2a2bada..a242f23 100644 --- a/SocketIOClientSwift/SocketIOClient.swift +++ b/SocketIOClientSwift/SocketIOClient.swift @@ -169,7 +169,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { dispatch_after(time, handleQueue) {[weak self] in if let this = self where this.status != .Connected { this.status = .Closed - this.engine?.close(fast: true) + this.engine?.close() handler?() } @@ -218,7 +218,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { reconnects = false // Make sure the engine is actually dead. - engine?.close(fast: true) + engine?.close() handleEvent("disconnect", data: [reason], isInternalMessage: true) } @@ -322,6 +322,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient { // Called when the socket gets an ack for something it sent func handleAck(ack: Int, data: AnyObject?) { + guard status == .Connected else {return} + Logger.log("Handling ack: %@ with data: %@", type: logType, args: ack, data ?? "") ackHandlers.executeAck(ack,