always close fast. Don't handle acks after close

This commit is contained in:
Erik 2015-10-19 16:40:09 -04:00
parent ea7e60cde2
commit 02971e14c2
3 changed files with 14 additions and 11 deletions

View File

@ -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()
}

View File

@ -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]?)

View File

@ -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,