This commit is contained in:
Erik 2015-03-16 20:48:09 -04:00
parent 2712461044
commit 7d08f962d5
2 changed files with 12 additions and 3 deletions

View File

@ -31,10 +31,13 @@ public typealias AckCallback = (NSArray?) -> Void
let event:String! let event:String!
var acked = false var acked = false
var callback:AckCallback? var callback:AckCallback?
weak var socket:SocketIOClient?
init(event:String, ackNum:Int = 0) { init(event:String, ackNum:Int = 0, socket:SocketIOClient) {
self.ackNum = ackNum self.ackNum = ackNum
self.event = event self.event = event
self.socket = socket
} }
public func onAck(timeout:UInt64, withCallback callback:AckCallback) { public func onAck(timeout:UInt64, withCallback callback:AckCallback) {
@ -50,6 +53,7 @@ public typealias AckCallback = (NSArray?) -> Void
if !self!.acked { if !self!.acked {
self?.executeAck(["No ACK"]) self?.executeAck(["No ACK"])
self?.socket?.removeAck(self!)
} }
} }
} }

View File

@ -198,11 +198,12 @@ public class SocketIOClient: NSObject {
public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler { public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler {
if !self.connected { if !self.connected {
return SocketAckHandler(event: "fail") return SocketAckHandler(event: "fail", socket: self)
} }
self.currentAck++ self.currentAck++
let ackHandler = SocketAckHandler(event: event, ackNum: self.currentAck) let ackHandler = SocketAckHandler(event: event,
ackNum: self.currentAck, socket: self)
self.ackHandlers.append(ackHandler) self.ackHandlers.append(ackHandler)
dispatch_async(self.emitQueue) {[weak self] in dispatch_async(self.emitQueue) {[weak self] in
@ -385,6 +386,10 @@ public class SocketIOClient: NSObject {
} }
} }
func removeAck(ack:SocketAckHandler) {
self.ackHandlers = self.ackHandlers.filter {$0 === ack ? false : true}
}
// We lost connection and should attempt to reestablish // We lost connection and should attempt to reestablish
func tryReconnect() { func tryReconnect() {
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts { if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {