@@ -147,13 +147,12 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
147
147
}
148
148
}
149
149
150
- private func checkIfMessageIsBase64Binary( var message: String ) -> Bool {
150
+ private func checkIfMessageIsBase64Binary( message: String ) -> Bool {
151
151
if message. hasPrefix ( " b4 " ) {
152
152
// binary in base64 string
153
- message. removeRange ( Range ( start: message. startIndex,
154
- end: message. startIndex. advancedBy ( 2 ) ) )
153
+ let noPrefix = message [ message. startIndex. advancedBy ( 2 ) ..< message. endIndex]
155
154
156
- if let data = NSData ( base64EncodedString: message ,
155
+ if let data = NSData ( base64EncodedString: noPrefix ,
157
156
options: . IgnoreUnknownCharacters) {
158
157
client? . parseBinaryData ( data)
159
158
}
@@ -282,17 +281,15 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
282
281
private func flushProbeWait( ) {
283
282
DefaultSocketLogger . Logger. log ( " Flushing probe wait " , type: logType)
284
283
285
- dispatch_async ( emitQueue) { [ weak self] in
286
- if let this = self {
287
- for waiter in this. probeWait {
288
- this. write ( waiter. msg, withType: waiter. type, withData: waiter. data)
289
- }
290
-
291
- this. probeWait. removeAll ( keepCapacity: false )
292
-
293
- if this. postWait. count != 0 {
294
- this. flushWaitingForPostToWebSocket ( )
295
- }
284
+ dispatch_async ( emitQueue) {
285
+ for waiter in self . probeWait {
286
+ self . write ( waiter. msg, withType: waiter. type, withData: waiter. data)
287
+ }
288
+
289
+ self . probeWait. removeAll ( keepCapacity: false )
290
+
291
+ if self . postWait. count != 0 {
292
+ self . flushWaitingForPostToWebSocket ( )
296
293
}
297
294
}
298
295
}
@@ -420,10 +417,11 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
420
417
client? . parseBinaryData ( data. subdataWithRange ( NSMakeRange ( 1 , data. length - 1 ) ) )
421
418
}
422
419
423
- private func parseEngineMessage( var message: String, fromPolling: Bool) {
420
+ private func parseEngineMessage( message: String, fromPolling: Bool) {
424
421
DefaultSocketLogger . Logger. log ( " Got message: %@ " , type: logType, args: message)
425
422
426
423
let reader = SocketStringReader ( message: message)
424
+ let fixedString : String
427
425
428
426
guard let type = SocketEnginePacketType ( rawValue: Int ( reader. currentCharacter) ?? - 1 ) else {
429
427
if !checkIfMessageIsBase64Binary( message) {
@@ -434,22 +432,22 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
434
432
}
435
433
436
434
if fromPolling && type != . Noop {
437
- fixDoubleUTF8 ( & message)
435
+ fixedString = fixDoubleUTF8 ( message)
436
+ } else {
437
+ fixedString = message
438
438
}
439
439
440
440
switch type {
441
441
case . Message:
442
- message. removeAtIndex ( message. startIndex)
443
- handleMessage ( message)
442
+ handleMessage ( fixedString [ fixedString. startIndex. successor ( ) ..< fixedString. endIndex] )
444
443
case . Noop:
445
444
handleNOOP ( )
446
445
case . Pong:
447
- handlePong ( message )
446
+ handlePong ( fixedString )
448
447
case . Open:
449
- message. removeAtIndex ( message. startIndex)
450
- handleOpen ( message)
448
+ handleOpen ( fixedString [ fixedString. startIndex. successor ( ) ..< fixedString. endIndex] )
451
449
case . Close:
452
- handleClose ( message )
450
+ handleClose ( fixedString )
453
451
default :
454
452
DefaultSocketLogger . Logger. log ( " Got unknown packet type " , type: logType)
455
453
}
@@ -567,7 +565,6 @@ extension SocketEngine {
567
565
let req = NSMutableURLRequest ( URL: NSURL ( string: urlPolling + " &sid= \( sid) &b64=1 " ) !)
568
566
569
567
addHeaders ( req)
570
-
571
568
doLongPoll ( req)
572
569
}
573
570
@@ -600,9 +597,9 @@ extension SocketEngine {
600
597
601
598
DefaultSocketLogger . Logger. log ( " Got polling response " , type: this. logType)
602
599
603
- if let str = NSString ( data: data!, encoding: NSUTF8StringEncoding) as? String {
604
- dispatch_async ( this. parseQueue) { [ weak this ] in
605
- this? . parsePollingMessage ( str)
600
+ if let str = String ( data: data!, encoding: NSUTF8StringEncoding) {
601
+ dispatch_async ( this. parseQueue) {
602
+ this. parsePollingMessage ( str)
606
603
}
607
604
}
608
605
@@ -666,10 +663,10 @@ extension SocketEngine {
666
663
667
664
this. waitingForPost = false
668
665
669
- dispatch_async ( this. emitQueue) { [ weak this ] in
670
- if !( this? . fastUpgrade ?? true ) {
671
- this? . flushWaitingForPost ( )
672
- this? . doPoll ( )
666
+ dispatch_async ( this. emitQueue) {
667
+ if !this. fastUpgrade {
668
+ this. flushWaitingForPost ( )
669
+ this. doPoll ( )
673
670
}
674
671
}
675
672
}
@@ -712,12 +709,11 @@ extension SocketEngine {
712
709
713
710
/// Send polling message.
714
711
/// Only call on emitQueue
715
- private func sendPollMessage( var msg : String , withType type: SocketEnginePacketType ,
712
+ private func sendPollMessage( message : String , withType type: SocketEnginePacketType ,
716
713
datas: [ NSData ] ? = nil ) {
717
- DefaultSocketLogger . Logger. log ( " Sending poll: %@ as type: %@ " , type: logType, args: msg, type. rawValue)
718
-
719
- doubleEncodeUTF8 ( & msg)
720
- let strMsg = " \( type. rawValue) \( msg) "
714
+ DefaultSocketLogger . Logger. log ( " Sending poll: %@ as type: %@ " , type: logType, args: message, type. rawValue)
715
+ let fixedMessage = doubleEncodeUTF8 ( message)
716
+ let strMsg = " \( type. rawValue) \( fixedMessage) "
721
717
722
718
postWait. append ( strMsg)
723
719
@@ -749,7 +745,7 @@ extension SocketEngine {
749
745
ws? . writeString ( " \( type. rawValue) \( str) " )
750
746
751
747
for data in datas ?? [ ] {
752
- if case let Either . Left( bin) = createBinaryDataForSend ( data) {
748
+ if case let . Left( bin) = createBinaryDataForSend ( data) {
753
749
ws? . writeData ( bin)
754
750
}
755
751
}
0 commit comments