@@ -230,13 +230,19 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
230230
231231 /// Send an event to the server, with optional data items.
232232 ///
233+ /// If an error occurs trying to transform `items` into their socket representation, a `SocketClientEvent.error`
234+ /// will be emitted. The structure of the error data is `[eventName, items, theError]`
235+ ///
233236 /// - parameter event: The event to send.
234237 /// - parameter items: The items to send with this event. May be left out.
235238 open func emit( _ event: String , _ items: SocketData ... ) {
236239 do {
237240 emit ( event, with: try items. map ( { try $0. socketRepresentation ( ) } ) )
238- } catch {
239- fatalError ( " Error creating socketRepresentation for emit: \( event) , \( items) " )
241+ } catch let err {
242+ DefaultSocketLogger . Logger. error ( " Error creating socketRepresentation for emit: \( event) , \( items) " ,
243+ type: logType)
244+
245+ handleClientEvent ( . error, data: [ event, items, err] )
240246 }
241247 }
242248
@@ -258,6 +264,9 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
258264 /// **NOTE**: It is up to the server send an ack back, just calling this method does not mean the server will ack.
259265 /// Check that your server's api will ack the event being sent.
260266 ///
267+ /// If an error occurs trying to transform `items` into their socket representation, a `SocketClientEvent.error`
268+ /// will be emitted. The structure of the error data is `[eventName, items, theError]`
269+ ///
261270 /// Example:
262271 ///
263272 /// ```swift
@@ -272,8 +281,13 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
272281 open func emitWithAck( _ event: String , _ items: SocketData ... ) -> OnAckCallback {
273282 do {
274283 return emitWithAck ( event, with: try items. map ( { try $0. socketRepresentation ( ) } ) )
275- } catch {
276- fatalError ( " Error creating socketRepresentation for emit: \( event) , \( items) " )
284+ } catch let err {
285+ DefaultSocketLogger . Logger. error ( " Error creating socketRepresentation for emit: \( event) , \( items) " ,
286+ type: logType)
287+
288+ handleClientEvent ( . error, data: [ event, items, err] )
289+
290+ return OnAckCallback ( ackNumber: - 1 , items: [ ] , socket: self )
277291 }
278292 }
279293
0 commit comments