File tree 2 files changed +12
-3
lines changed
2 files changed +12
-3
lines changed Original file line number Diff line number Diff line change @@ -31,10 +31,13 @@ public typealias AckCallback = (NSArray?) -> Void
31
31
let event : String !
32
32
var acked = false
33
33
var callback : AckCallback ?
34
+ weak var socket : SocketIOClient ?
35
+
34
36
35
- init ( event: String , ackNum: Int = 0 ) {
37
+ init ( event: String , ackNum: Int = 0 , socket : SocketIOClient ) {
36
38
self . ackNum = ackNum
37
39
self . event = event
40
+ self . socket = socket
38
41
}
39
42
40
43
public func onAck( timeout: UInt64 , withCallback callback: AckCallback ) {
@@ -50,6 +53,7 @@ public typealias AckCallback = (NSArray?) -> Void
50
53
51
54
if !self !. acked {
52
55
self ? . executeAck ( [ " No ACK " ] )
56
+ self ? . socket? . removeAck ( self !)
53
57
}
54
58
}
55
59
}
Original file line number Diff line number Diff line change @@ -198,11 +198,12 @@ public class SocketIOClient: NSObject {
198
198
199
199
public func emitWithAck( event: String , _ args: AnyObject ... ) -> SocketAckHandler {
200
200
if !self . connected {
201
- return SocketAckHandler ( event: " fail " )
201
+ return SocketAckHandler ( event: " fail " , socket : self )
202
202
}
203
203
204
204
self . currentAck++
205
- let ackHandler = SocketAckHandler ( event: event, ackNum: self . currentAck)
205
+ let ackHandler = SocketAckHandler ( event: event,
206
+ ackNum: self . currentAck, socket: self )
206
207
self . ackHandlers. append ( ackHandler)
207
208
208
209
dispatch_async ( self . emitQueue) { [ weak self] in
@@ -385,6 +386,10 @@ public class SocketIOClient: NSObject {
385
386
}
386
387
}
387
388
389
+ func removeAck( ack: SocketAckHandler ) {
390
+ self . ackHandlers = self . ackHandlers. filter { $0 === ack ? false : true }
391
+ }
392
+
388
393
// We lost connection and should attempt to reestablish
389
394
func tryReconnect( ) {
390
395
if self . reconnectAttempts != - 1 && self . currentReconnectAttempt + 1 > self . reconnectAttempts {
You can’t perform that action at this time.
0 commit comments