File tree Expand file tree Collapse file tree 2 files changed +12
-3
lines changed Expand file tree Collapse file tree 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
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 }
Original file line number Diff line number Diff 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 {
You can’t perform that action at this time.
0 commit comments