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!
var acked = false
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.event = event
self.socket = socket
}
public func onAck(timeout:UInt64, withCallback callback:AckCallback) {
@ -50,6 +53,7 @@ public typealias AckCallback = (NSArray?) -> Void
if !self!.acked {
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 {
if !self.connected {
return SocketAckHandler(event: "fail")
return SocketAckHandler(event: "fail", socket: self)
}
self.currentAck++
let ackHandler = SocketAckHandler(event: event, ackNum: self.currentAck)
let ackHandler = SocketAckHandler(event: event,
ackNum: self.currentAck, socket: self)
self.ackHandlers.append(ackHandler)
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
func tryReconnect() {
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {