Skip to content

Commit 7d08f96

Browse files
committed
fix #16
1 parent 2712461 commit 7d08f96

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

SwiftIO/SocketAckHandler.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,13 @@ public typealias AckCallback = (NSArray?) -> Void
3131
let event:String!
3232
var acked = false
3333
var callback:AckCallback?
34+
weak var socket:SocketIOClient?
35+
3436

35-
init(event:String, ackNum:Int = 0) {
37+
init(event:String, ackNum:Int = 0, socket:SocketIOClient) {
3638
self.ackNum = ackNum
3739
self.event = event
40+
self.socket = socket
3841
}
3942

4043
public func onAck(timeout:UInt64, withCallback callback:AckCallback) {
@@ -50,6 +53,7 @@ public typealias AckCallback = (NSArray?) -> Void
5053

5154
if !self!.acked {
5255
self?.executeAck(["No ACK"])
56+
self?.socket?.removeAck(self!)
5357
}
5458
}
5559
}

SwiftIO/SocketIOClient.swift

+7-2
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,12 @@ public class SocketIOClient: NSObject {
198198

199199
public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler {
200200
if !self.connected {
201-
return SocketAckHandler(event: "fail")
201+
return SocketAckHandler(event: "fail", socket: self)
202202
}
203203

204204
self.currentAck++
205-
let ackHandler = SocketAckHandler(event: event, ackNum: self.currentAck)
205+
let ackHandler = SocketAckHandler(event: event,
206+
ackNum: self.currentAck, socket: self)
206207
self.ackHandlers.append(ackHandler)
207208

208209
dispatch_async(self.emitQueue) {[weak self] in
@@ -385,6 +386,10 @@ public class SocketIOClient: NSObject {
385386
}
386387
}
387388

389+
func removeAck(ack:SocketAckHandler) {
390+
self.ackHandlers = self.ackHandlers.filter {$0 === ack ? false : true}
391+
}
392+
388393
// We lost connection and should attempt to reestablish
389394
func tryReconnect() {
390395
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {

0 commit comments

Comments
 (0)