@@ -35,26 +35,6 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
35
35
36
36
private static let logType = " SocketIOClient "
37
37
38
- /// The engine for this client.
39
- @objc
40
- public private( set) var engine : SocketEngineSpec ?
41
-
42
- /// The status of this client.
43
- @objc
44
- public private( set) var status = SocketIOClientStatus . notConnected {
45
- didSet {
46
- switch status {
47
- case . connected:
48
- reconnecting = false
49
- currentReconnectAttempt = 0
50
- default :
51
- break
52
- }
53
-
54
- handleClientEvent ( . statusChange, data: [ status] )
55
- }
56
- }
57
-
58
38
/// If `true` then every time `connect` is called, a new engine will be created.
59
39
@objc
60
40
public var forceNew = false
@@ -94,20 +74,46 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
94
74
@objc
95
75
public var socketURL : URL
96
76
97
- var ackHandlers = SocketAckManager ( )
98
-
99
77
/// A list of packets that are waiting for binary data.
100
78
///
101
79
/// The way that socket.io works all data should be sent directly after each packet.
102
80
/// So this should ideally be an array of one packet waiting for data.
103
- var waitingPackets = [ SocketPacket] ( )
81
+ ///
82
+ /// **This should not be modified directly.**
83
+ public var waitingPackets = [ SocketPacket] ( )
84
+
85
+ /// A handler that will be called on any event.
86
+ public private( set) var anyHandler : ( ( SocketAnyEvent ) -> ( ) ) ?
87
+
88
+ /// The engine for this client.
89
+ @objc
90
+ public private( set) var engine : SocketEngineSpec ?
91
+
92
+ /// The array of handlers for this socket.
93
+ public private( set) var handlers = [ SocketEventHandler] ( )
94
+
95
+ /// The status of this client.
96
+ @objc
97
+ public private( set) var status = SocketIOClientStatus . notConnected {
98
+ didSet {
99
+ switch status {
100
+ case . connected:
101
+ reconnecting = false
102
+ currentReconnectAttempt = 0
103
+ default :
104
+ break
105
+ }
106
+
107
+ handleClientEvent ( . statusChange, data: [ status] )
108
+ }
109
+ }
110
+
111
+ var ackHandlers = SocketAckManager ( )
104
112
105
113
private( set) var currentAck = - 1
106
114
private( set) var reconnectAttempts = - 1
107
115
108
- private var anyHandler : ( ( SocketAnyEvent ) -> ( ) ) ?
109
116
private var currentReconnectAttempt = 0
110
- private var handlers = [ SocketEventHandler] ( )
111
117
private var reconnecting = false
112
118
113
119
// MARK: Initializers
@@ -232,7 +238,9 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
232
238
233
239
/// Called when the client connects to a namespace. If the client was created with a namespace upfront,
234
240
/// then this is only called when the client connects to that namespace.
235
- func didConnect( toNamespace namespace: String ) {
241
+ ///
242
+ /// - parameter toNamespace: The namespace that was connected to.
243
+ open func didConnect( toNamespace namespace: String ) {
236
244
DefaultSocketLogger . Logger. log ( " Socket connected " , type: SocketIOClient . logType)
237
245
238
246
status = . connected
@@ -241,7 +249,9 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
241
249
}
242
250
243
251
/// Called when the client has disconnected from socket.io.
244
- func didDisconnect( reason: String ) {
252
+ ///
253
+ /// - parameter reason: The reason for the disconnection.
254
+ open func didDisconnect( reason: String ) {
245
255
guard status != . disconnected else { return }
246
256
247
257
DefaultSocketLogger . Logger. log ( " Disconnected: \( reason) " , type: SocketIOClient . logType)
@@ -361,8 +371,13 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
361
371
engine? . send ( str, withData: packet. binary)
362
372
}
363
373
364
- // If the server wants to know that the client received data
365
- func emitAck( _ ack: Int , with items: [ Any ] ) {
374
+ /// Call when you wish to tell the server that you've received the event for `ack`.
375
+ ///
376
+ /// **You shouldn't need to call this directly.** Instead use an `SocketAckEmitter` that comes in an event callback.
377
+ ///
378
+ /// - parameter ack: The ack number.
379
+ /// - parameter with: The data for this ack.
380
+ open func emitAck( _ ack: Int , with items: [ Any ] ) {
366
381
guard status == . connected else { return }
367
382
368
383
let packet = SocketPacket . packetFromEmit ( items, id: ack, nsp: nsp, ack: true )
@@ -419,21 +434,25 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
419
434
DefaultSocketLogger . Logger. log ( reason, type: SocketIOClient . logType)
420
435
}
421
436
422
- // Called when the socket gets an ack for something it sent
423
- func handleAck( _ ack: Int , data: [ Any ] ) {
437
+ /// Called when socket.io has acked one of our emits. Causes the corresponding ack callback to be called.
438
+ ///
439
+ /// - parameter ack: The number for this ack.
440
+ /// - parameter data: The data sent back with this ack.
441
+ @objc
442
+ open func handleAck( _ ack: Int , data: [ Any ] ) {
424
443
guard status == . connected else { return }
425
444
426
445
DefaultSocketLogger . Logger. log ( " Handling ack: \( ack) with data: \( data) " , type: SocketIOClient . logType)
427
446
428
447
ackHandlers. executeAck ( ack, with: data, onQueue: handleQueue)
429
448
}
430
449
431
- /// Causes an event to be handled, and any event handlers for that event to be called .
450
+ /// Called when we get an event from socket.io .
432
451
///
433
- /// - parameter event: The event that is to be handled .
434
- /// - parameter data: the data associated with this event.
435
- /// - parameter isInternalMessage: If `true` event handlers for this event will be called regardless of status .
436
- /// - parameter withAck: The ack number for this event. May be left out .
452
+ /// - parameter event: The name of the event .
453
+ /// - parameter data: The data that was sent with this event.
454
+ /// - parameter isInternalMessage: Whether this event was sent internally. If `true` it is always sent to handlers .
455
+ /// - parameter withAck: If > 0 then this event expects to get an ack back from the client .
437
456
@objc
438
457
open func handleEvent( _ event: String , data: [ Any ] , isInternalMessage: Bool , withAck ack: Int = - 1 ) {
439
458
guard status == . connected || isInternalMessage else { return }
@@ -447,7 +466,11 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
447
466
}
448
467
}
449
468
450
- func handleClientEvent( _ event: SocketClientEvent , data: [ Any ] ) {
469
+ /// Called on socket.io specific events.
470
+ ///
471
+ /// - parameter event: The `SocketClientEvent`.
472
+ /// - parameter data: The data for this event.
473
+ open func handleClientEvent( _ event: SocketClientEvent , data: [ Any ] ) {
451
474
handleEvent ( event. rawValue, data: data, isInternalMessage: true )
452
475
}
453
476
@@ -615,6 +638,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
615
638
}
616
639
617
640
/// Removes all handlers.
641
+ ///
618
642
/// Can be used after disconnecting to break any potential remaining retain cycles.
619
643
@objc
620
644
open func removeAllHandlers( ) {
0 commit comments