@@ -38,7 +38,7 @@ class SocketIOClient {
3838 private var currentAck = - 1
3939 private var forcePolling = false
4040 private var handlers = [ SocketEventHandler] ( )
41- private var lastSocketMessage : SocketEvent ?
41+ private var waitingData = [ SocketEvent] ( )
4242 private var paramConnect = false
4343 private var _secure = false
4444 var closed = false
@@ -620,7 +620,7 @@ class SocketIOClient {
620620
621621 // Message is binary
622622 if let binary = message as? NSData {
623- if self . lastSocketMessage == nil {
623+ if self . waitingData . isEmpty {
624624 return
625625 }
626626
@@ -667,7 +667,6 @@ class SocketIOClient {
667667 mutMessageObject = RegexMutable ( binaryGroup [ 5 ] )
668668
669669 if namespace == " " && self . nsp != nil {
670- self . lastSocketMessage = nil
671670 return
672671 }
673672
@@ -684,7 +683,7 @@ class SocketIOClient {
684683 placeholders: numberOfPlaceholders. toInt ( ) !, ackNum: ackNum. toInt ( ) )
685684 }
686685
687- self . lastSocketMessage = mes
686+ self . waitingData . append ( mes)
688687 } else if binaryGroup [ 1 ] . hasPrefix ( " 6 " ) {
689688 let messageType = RegexMutable ( binaryGroup [ 1 ] )
690689 let numberOfPlaceholders = ( messageType [ " 6 " ] ~= " " ) as String
@@ -706,8 +705,10 @@ class SocketIOClient {
706705 let placeholdersRemoved = mutMessageObject [ " ( \\ { \" _placeholder \" :true, \" num \" :( \\ d*) \\ }) " ]
707706 ~= " \" ~~$2 \" "
708707
709- self . lastSocketMessage = SocketEvent ( event: " " , args: placeholdersRemoved,
708+ let event = SocketEvent ( event: " " , args: placeholdersRemoved,
710709 placeholders: numberOfPlaceholders. toInt ( ) !, ackNum: ackNum. toInt ( ) , justAck: true )
710+
711+ self . waitingData. append ( event)
711712 }
712713 /**
713714 End check for binary placeholders
@@ -717,41 +718,42 @@ class SocketIOClient {
717718
718719 // Handles binary data
719720 private func parseBinaryData( data: NSData ) {
720- let shouldExecute = self . lastSocketMessage ? . addData ( data)
721+ let shouldExecute = self . waitingData [ 0 ] . addData ( data)
721722
722- if shouldExecute != nil && shouldExecute! {
723- var event = self . lastSocketMessage!. event
724- var parsedArgs : AnyObject ? = SocketIOClient . parseData ( self . lastSocketMessage!. args as? String )
723+ if shouldExecute {
724+ let socketEvent = self . waitingData. removeAtIndex ( 0 )
725+ var event = socketEvent. event
726+ var parsedArgs : AnyObject ? = SocketIOClient . parseData ( socketEvent. args as? String )
725727
726728 if let args: AnyObject = parsedArgs {
727- let filledInArgs : AnyObject = self . lastSocketMessage! . fillInPlaceholders ( args)
729+ let filledInArgs : AnyObject = socketEvent . fillInPlaceholders ( args)
728730
729- if self . lastSocketMessage! . justAck! {
731+ if socketEvent . justAck! {
730732 // Should handle ack
731- self . handleAck ( self . lastSocketMessage! . ack!, data: filledInArgs)
733+ self . handleAck ( socketEvent . ack!, data: filledInArgs)
732734 return
733735 }
734736
735737 // Should do event
736- if self . lastSocketMessage! . ack != nil {
738+ if socketEvent . ack != nil {
737739 self . handleEvent ( event, data: filledInArgs, isInternalMessage: false ,
738- wantsAck: self . lastSocketMessage! . ack!, withAckType: 6 )
740+ wantsAck: socketEvent . ack!, withAckType: 6 )
739741 } else {
740742 self . handleEvent ( event, data: filledInArgs)
741743 }
742744 } else {
743- let filledInArgs : AnyObject = self . lastSocketMessage! . fillInPlaceholders ( )
745+ let filledInArgs : AnyObject = socketEvent . fillInPlaceholders ( )
744746
745747 // Should handle ack
746- if self . lastSocketMessage! . justAck! {
747- self . handleAck ( self . lastSocketMessage! . ack!, data: filledInArgs)
748+ if socketEvent . justAck! {
749+ self . handleAck ( socketEvent . ack!, data: filledInArgs)
748750 return
749751 }
750752
751753 // Should handle ack
752- if self . lastSocketMessage! . ack != nil {
754+ if socketEvent . ack != nil {
753755 self . handleEvent ( event, data: filledInArgs, isInternalMessage: false ,
754- wantsAck: self . lastSocketMessage! . ack!, withAckType: 6 )
756+ wantsAck: socketEvent . ack!, withAckType: 6 )
755757 } else {
756758 self . handleEvent ( event, data: filledInArgs)
757759 }
0 commit comments