@@ -27,13 +27,12 @@ import Foundation
27
27
28
28
/// The main class for SocketIOClientSwift.
29
29
///
30
+ /// **NOTE**: The client is not thread/queue safe, all interaction with the socket should be done on the `handleQueue`
31
+ ///
30
32
/// Represents a socket.io-client. Most interaction with socket.io will be through this class.
31
33
open class SocketIOClient : NSObject , SocketIOClientSpec , SocketEngineClient , SocketParsable {
32
34
// MARK: Properties
33
35
34
- /// The URL of the socket.io server. This is set in the initializer.
35
- public let socketURL : URL
36
-
37
36
/// The engine for this client.
38
37
public private( set) var engine : SocketEngineSpec ?
39
38
@@ -76,18 +75,24 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
76
75
return engine? . sid
77
76
}
78
77
79
- private let logType = " SocketIOClient "
78
+ /// The URL of the socket.io server.
79
+ ///
80
+ /// If changed after calling `init`, `forceNew` must be set to `true`, or it will only connect to the url set in the
81
+ /// init.
82
+ public var socketURL : URL
80
83
81
- private var anyHandler : ( ( SocketAnyEvent ) -> Void ) ?
82
- private var currentReconnectAttempt = 0
83
- private var handlers = [ SocketEventHandler] ( )
84
- private var reconnecting = false
84
+ var ackHandlers = SocketAckManager ( )
85
+ var waitingPackets = [ SocketPacket] ( )
85
86
86
87
private( set) var currentAck = - 1
87
88
private( set) var reconnectAttempts = - 1
88
89
89
- var ackHandlers = SocketAckManager ( )
90
- var waitingPackets = [ SocketPacket] ( )
90
+ private let logType = " SocketIOClient "
91
+
92
+ private var anyHandler : ( ( SocketAnyEvent ) -> ( ) ) ?
93
+ private var currentReconnectAttempt = 0
94
+ private var handlers = [ SocketEventHandler] ( )
95
+ private var reconnecting = false
91
96
92
97
// MARK: Initializers
93
98
@@ -147,13 +152,11 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
147
152
148
153
// MARK: Methods
149
154
150
- private func addEngine( ) -> SocketEngineSpec {
155
+ private func addEngine( ) {
151
156
DefaultSocketLogger . Logger. log ( " Adding engine " , type: logType, args: " " )
152
157
153
158
engine? . client = nil
154
159
engine = SocketEngine ( client: self , url: socketURL, config: config)
155
-
156
- return engine!
157
160
}
158
161
159
162
/// Connect to the server.
@@ -166,7 +169,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
166
169
/// - parameter timeoutAfter: The number of seconds after which if we are not connected we assume the connection
167
170
/// has failed. Pass 0 to never timeout.
168
171
/// - parameter withHandler: The handler to call when the client fails to connect.
169
- open func connect( timeoutAfter: Int , withHandler handler: ( ( ) -> Void ) ? ) {
172
+ open func connect( timeoutAfter: Int , withHandler handler: ( ( ) -> ( ) ) ? ) {
170
173
assert ( timeoutAfter >= 0 , " Invalid timeout: \( timeoutAfter) " )
171
174
172
175
guard status != . connected else {
@@ -177,11 +180,11 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
177
180
status = . connecting
178
181
179
182
if engine == nil || forceNew {
180
- addEngine ( ) . connect ( )
181
- } else {
182
- engine? . connect ( )
183
+ addEngine ( )
183
184
}
184
185
186
+ engine? . connect ( )
187
+
185
188
guard timeoutAfter != 0 else { return }
186
189
187
190
handleQueue. asyncAfter ( deadline: DispatchTime . now ( ) + Double( timeoutAfter) ) { [ weak self] in
@@ -496,7 +499,6 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
496
499
return handler. id
497
500
}
498
501
499
-
500
502
/// Adds a single-use handler for an event.
501
503
///
502
504
/// - parameter event: The event name for this handler.
@@ -522,7 +524,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
522
524
/// Adds a handler that will be called on every event.
523
525
///
524
526
/// - parameter handler: The callback that will execute whenever an event is received.
525
- open func onAny( _ handler: @escaping ( SocketAnyEvent ) -> Void ) {
527
+ open func onAny( _ handler: @escaping ( SocketAnyEvent ) -> ( ) ) {
526
528
anyHandler = handler
527
529
}
528
530
0 commit comments