@@ -48,7 +48,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
48
48
break
49
49
}
50
50
51
- handleEvent ( " statusChange " , data: [ status] , isInternalMessage : true )
51
+ handleClientEvent ( . statusChange, data: [ status] )
52
52
}
53
53
}
54
54
@@ -204,11 +204,10 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
204
204
205
205
func didConnect( ) {
206
206
DefaultSocketLogger . Logger. log ( " Socket connected " , type: logType)
207
+
207
208
status = . connected
208
209
209
- // Don't handle as internal because something crazy could happen where
210
- // we disconnect before it's handled
211
- handleEvent ( " connect " , data: [ ] , isInternalMessage: false )
210
+ handleClientEvent ( . connect, data: [ ] )
212
211
}
213
212
214
213
func didDisconnect( reason: String ) {
@@ -221,7 +220,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
221
220
222
221
// Make sure the engine is actually dead.
223
222
engine? . disconnect ( reason: reason)
224
- handleEvent ( " disconnect " , data: [ reason] , isInternalMessage : true )
223
+ handleClientEvent ( . disconnect, data: [ reason] )
225
224
}
226
225
227
226
/// Disconnects the socket.
@@ -249,7 +248,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
249
248
/// - parameter with: The items to send with this event. May be left out.
250
249
open func emit( _ event: String , with items: [ Any ] ) {
251
250
guard status == . connected else {
252
- handleEvent ( " error " , data: [ " Tried emitting \( event) when not connected " ] , isInternalMessage : true )
251
+ handleClientEvent ( . error, data: [ " Tried emitting \( event) when not connected " ] )
253
252
return
254
253
}
255
254
@@ -302,7 +301,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
302
301
303
302
func _emit( _ data: [ Any ] , ack: Int ? = nil ) {
304
303
guard status == . connected else {
305
- handleEvent ( " error " , data: [ " Tried emitting when not connected " ] , isInternalMessage : true )
304
+ handleClientEvent ( . error, data: [ " Tried emitting when not connected " ] )
306
305
return
307
306
}
308
307
@@ -362,7 +361,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
362
361
private func _engineDidError( reason: String ) {
363
362
DefaultSocketLogger . Logger. error ( " %@ " , type: logType, args: reason)
364
363
365
- handleEvent ( " error " , data: [ reason] , isInternalMessage : true )
364
+ handleClientEvent ( . error, data: [ reason] )
366
365
}
367
366
368
367
/// Called when the engine opens.
@@ -399,6 +398,10 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
399
398
}
400
399
}
401
400
401
+ func handleClientEvent( _ event: SocketClientEvent , data: [ Any ] ) {
402
+ handleEvent ( event. rawValue, data: data, isInternalMessage: true )
403
+ }
404
+
402
405
/// Leaves nsp and goes back to the default namespace.
403
406
open func leaveNamespace( ) {
404
407
if nsp != " / " {
@@ -458,6 +461,30 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
458
461
return handler. id
459
462
}
460
463
464
+ /// Adds a handler for a client event.
465
+ ///
466
+ /// Example:
467
+ ///
468
+ /// ```swift
469
+ /// socket.on(clientEvent: .connect) {data, ack in
470
+ /// ...
471
+ /// }
472
+ /// ```
473
+ ///
474
+ /// - parameter event: The event for this handler.
475
+ /// - parameter callback: The callback that will execute when this event is received.
476
+ /// - returns: A unique id for the handler that can be used to remove it.
477
+ @discardableResult
478
+ open func on( clientEvent event: SocketClientEvent , callback: @escaping NormalCallback ) -> UUID {
479
+ DefaultSocketLogger . Logger. log ( " Adding handler for event: %@ " , type: logType, args: event)
480
+
481
+ let handler = SocketEventHandler ( event: event. rawValue, id: UUID ( ) , callback: callback)
482
+ handlers. append ( handler)
483
+
484
+ return handler. id
485
+ }
486
+
487
+
461
488
/// Adds a single-use handler for an event.
462
489
///
463
490
/// - parameter event: The event name for this handler.
@@ -522,7 +549,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
522
549
guard reconnecting else { return }
523
550
524
551
DefaultSocketLogger . Logger. log ( " Starting reconnect " , type: logType)
525
- handleEvent ( " reconnect " , data: [ reason] , isInternalMessage : true )
552
+ handleClientEvent ( . reconnect, data: [ reason] )
526
553
527
554
_tryReconnect ( )
528
555
}
@@ -535,7 +562,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
535
562
}
536
563
537
564
DefaultSocketLogger . Logger. log ( " Trying to reconnect " , type: logType)
538
- handleEvent ( " reconnectAttempt " , data: [ ( reconnectAttempts - currentReconnectAttempt) ] , isInternalMessage : true )
565
+ handleClientEvent ( . reconnectAttempt, data: [ ( reconnectAttempts - currentReconnectAttempt) ] )
539
566
540
567
currentReconnectAttempt += 1
541
568
connect ( )
0 commit comments