@@ -99,6 +99,19 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
9999 deinit {
100100 Logger . log ( " Engine is being deinit " , type: logType)
101101 }
102+
103+ private func checkIfMessageIsBase64 Binary( var message: String) {
104+ if message. hasPrefix ( " b4 " ) {
105+ // binary in base64 string
106+ message. removeRange ( Range < String . Index > ( start: message. startIndex,
107+ end: message. startIndex. advancedBy ( 2 ) ) )
108+
109+ if let data = NSData ( base64EncodedString: message,
110+ options: NSDataBase64DecodingOptions . IgnoreUnknownCharacters) {
111+ client? . parseBinaryData ( data)
112+ }
113+ }
114+ }
102115
103116 public func close( fast fast: Bool) {
104117 Logger . log ( " Engine is being closed. Fast: %@ " , type: logType, args: fast)
@@ -364,19 +377,6 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
364377 }
365378 }
366379
367- private func checkIfMessageIsBase64 Binary( var message: String) {
368- if message. hasPrefix ( " b4 " ) {
369- // binary in base64 string
370- message. removeRange ( Range < String . Index > ( start: message. startIndex,
371- end: message. startIndex. advancedBy ( 2 ) ) )
372-
373- if let data = NSData ( base64EncodedString: message,
374- options: NSDataBase64DecodingOptions . IgnoreUnknownCharacters) {
375- client? . parseBinaryData ( data)
376- }
377- }
378- }
379-
380380 private func handleMessage( message: String) {
381381 client? . parseSocketMessage ( message)
382382 }
@@ -492,11 +492,17 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
492492 var reader = SocketStringReader ( message: str)
493493
494494 while reader. hasNext {
495- let n = reader. readUntilStringOccurence ( " : " )
496- let str = reader. read ( Int ( n) !)
497-
498- dispatch_async ( handleQueue) {
499- self . parseEngineMessage ( str, fromPolling: true )
495+ if let n = Int ( reader. readUntilStringOccurence ( " : " ) ) {
496+ let str = reader. read ( n)
497+
498+ dispatch_async ( handleQueue) {
499+ self . parseEngineMessage ( str, fromPolling: true )
500+ }
501+ } else {
502+ dispatch_async ( handleQueue) {
503+ self . parseEngineMessage ( str, fromPolling: true )
504+ }
505+ break
500506 }
501507 }
502508 }
0 commit comments