@@ -67,6 +67,18 @@ open class SocketIOClient : NSObject, SocketIOClientSpec {
6767 @objc
6868 public private( set) weak var manager : SocketManagerSpec ?
6969
70+ /// A view into this socket where emits do not check for binary data.
71+ ///
72+ /// Usage:
73+ ///
74+ /// ```swift
75+ /// socket.rawEmitView.emit("myEvent", myObject)
76+ /// ```
77+ ///
78+ /// **NOTE**: It is not safe to hold on to this view beyond the life of the socket.
79+ @objc
80+ public private( set) lazy var rawEmitView = SocketRawView ( socket: self )
81+
7082 /// The status of this client.
7183 @objc
7284 public private( set) var status = SocketIOStatus . notConnected {
@@ -148,7 +160,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec {
148160 }
149161 }
150162
151- private func createOnAck( _ items: [ Any ] ) -> OnAckCallback {
163+ func createOnAck( _ items: [ Any ] , binary : Bool = true ) -> OnAckCallback {
152164 currentAck += 1
153165
154166 return OnAckCallback ( ackNumber: currentAck, items: items, socket: self )
@@ -216,11 +228,6 @@ open class SocketIOClient : NSObject, SocketIOClientSpec {
216228 /// - parameter items: The items to send with this event. Send an empty array to send no data.
217229 @objc
218230 open func emit( _ event: String , with items: [ Any ] ) {
219- guard status == . connected else {
220- handleClientEvent ( . error, data: [ " Tried emitting \( event) when not connected " ] )
221- return
222- }
223-
224231 emit ( [ event] + items)
225232 }
226233
@@ -277,16 +284,16 @@ open class SocketIOClient : NSObject, SocketIOClientSpec {
277284 return createOnAck ( [ event] + items)
278285 }
279286
280- func emit( _ data: [ Any ] , ack: Int ? = nil ) {
287+ func emit( _ data: [ Any ] , ack: Int ? = nil , binary : Bool = true , isAck : Bool = false ) {
281288 guard status == . connected else {
282289 handleClientEvent ( . error, data: [ " Tried emitting when not connected " ] )
283290 return
284291 }
285292
286- let packet = SocketPacket . packetFromEmit ( data, id: ack ?? - 1 , nsp: nsp, ack: false )
293+ let packet = SocketPacket . packetFromEmit ( data, id: ack ?? - 1 , nsp: nsp, ack: isAck , checkForBinary : binary )
287294 let str = packet. packetString
288295
289- DefaultSocketLogger . Logger. log ( " Emitting: \( str) " , type: logType)
296+ DefaultSocketLogger . Logger. log ( " Emitting: \( str) , Ack: \( isAck ) " , type: logType)
290297
291298 manager? . engine? . send ( str, withData: packet. binary)
292299 }
@@ -298,14 +305,7 @@ open class SocketIOClient : NSObject, SocketIOClientSpec {
298305 /// - parameter ack: The ack number.
299306 /// - parameter with: The data for this ack.
300307 open func emitAck( _ ack: Int , with items: [ Any ] ) {
301- guard status == . connected else { return }
302-
303- let packet = SocketPacket . packetFromEmit ( items, id: ack, nsp: nsp, ack: true )
304- let str = packet. packetString
305-
306- DefaultSocketLogger . Logger. log ( " Emitting Ack: \( str) " , type: logType)
307-
308- manager? . engine? . send ( str, withData: packet. binary)
308+ emit ( items, ack: ack, binary: true , isAck: true )
309309 }
310310
311311 /// Called when socket.io has acked one of our emits. Causes the corresponding ack callback to be called.
0 commit comments