@@ -185,7 +185,7 @@ class SocketParser {
185185 }
186186
187187 // Parses messages recieved
188- class func parseSocketMessage( stringMessage: String , socket: SocketIOClient ) {
188+ class func parseSocketMessage( var stringMessage: String , socket: SocketIOClient ) {
189189 if stringMessage == " " {
190190 return
191191 }
@@ -225,70 +225,74 @@ class SocketParser {
225225 **/
226226 var messageGroups : [ String ] ?
227227
228- if let groups = stringMessage [ " ( \\ d*) \\ /?( \\ w*)?,?( \\ d*)? \\ [ \" (.*?) \" ,?(.*?)? \\ ]$ " ,
229- NSRegularExpressionOptions . DotMatchesLineSeparators] . groups ( ) {
230- messageGroups = groups
231- } else if let ackGroup = stringMessage [ " ( \\ d*) \\ /?( \\ w*)?,?( \\ d*)? \\ [(.*?)? \\ ]$ " ,
232- NSRegularExpressionOptions . DotMatchesLineSeparators] . groups ( ) {
233- messageGroups = ackGroup
234- } else {
235- NSLog ( " Error parsing message: %s " , stringMessage)
236- return
237- }
228+ let type = stringMessage. removeAtIndex ( stringMessage. startIndex)
238229
239- if messageGroups! [ 1 ] . hasPrefix ( " 2 " ) {
240- var mesNum = messageGroups! [ 1 ]
241- var ackNum : String
242- var namespace : String ?
243-
244- if messageGroups![ 3 ] != " " {
245- ackNum = messageGroups! [ 3 ]
246- } else {
247- let range = Range < String . Index > ( start : mesNum . startIndex ,
248- end : advance ( mesNum. startIndex , 1 ) )
249- mesNum . replaceRange ( range , with : " " )
250- ackNum = mesNum
251- }
252-
253- namespace = messageGroups! [ 2 ]
254-
255- if namespace == " " && socket . nsp != nil {
256- return
257- }
258-
259- let event = messageGroups![ 4 ]
260- let data = " [ \( messageGroups! [ 5 ] ) ] "
261-
262- if let parsed : AnyObject = self . parseData ( data ) {
263- if ackNum == " " {
264- socket . handleEvent ( event , data : parsed )
265- } else {
266- socket . currentAck = ackNum . toInt ( ) !
267- socket . handleEvent ( event , data : parsed , isInternalMessage : false ,
268- wantsAck : ackNum . toInt ( ) , withAckType : 3 )
269- }
270-
271- return
272- }
273- } else if messageGroups! [ 1 ] . hasPrefix ( " 3 " ) {
274- let arr = Array ( messageGroups! [ 1 ] )
275- var ackNum : String
276- let nsp = messageGroups! [ 2 ]
277-
278- if nsp == " " && socket . nsp != nil {
279- return
230+ if type == " 2 " {
231+ if let groups = stringMessage [ " ( \\ d*) \\ /?( \\ w*)?,?( \\ d*)? \\ [ \" (.*?) \" ,?(.*?)? \\ ]$ " ,
232+ NSRegularExpressionOptions . DotMatchesLineSeparators ] . groups ( ) {
233+ messageGroups = groups
234+
235+ var mesNum = messageGroups![ 1 ]
236+ var ackNum : String
237+ var namespace : String ?
238+
239+ if mesNum == " " {
240+ ackNum = " "
241+ } else if messageGroups! [ 3 ] != " " {
242+ ackNum = messageGroups! [ 3 ]
243+ } else {
244+ let range = Range < String . Index > ( start : mesNum . startIndex ,
245+ end : advance ( mesNum . startIndex , 1 ) )
246+ mesNum . replaceRange ( range , with : " " )
247+ ackNum = mesNum
248+ }
249+
250+ namespace = messageGroups![ 2 ]
251+
252+ if namespace == " " && socket . nsp != nil {
253+ return
254+ }
255+
256+ let event = messageGroups! [ 4 ]
257+ let data = " [ \( messageGroups! [ 5 ] ) ] "
258+
259+ if let parsed : AnyObject = self . parseData ( data ) {
260+ if ackNum == " " {
261+ socket . handleEvent ( event , data : parsed )
262+ } else {
263+ socket . currentAck = ackNum . toInt ( ) !
264+ socket . handleEvent ( event , data : parsed , isInternalMessage : false ,
265+ wantsAck : ackNum . toInt ( ) , withAckType : 3 )
266+ }
267+
268+ return
269+ }
270+
280271 }
281-
282- if nsp == " " {
283- ackNum = String ( arr [ 1 ... arr. count- 1 ] )
284- } else {
285- ackNum = messageGroups![ 3 ]
272+ } else if type == " 3 " {
273+ if let ackGroup = stringMessage [ " ( \\ d*) \\ /?( \\ w*)?,?( \\ d*)? \\ [(.*?)? \\ ]$ " ,
274+ NSRegularExpressionOptions . DotMatchesLineSeparators] . groups ( ) {
275+ messageGroups = ackGroup
276+
277+ let arr = Array ( messageGroups![ 1 ] )
278+ var ackNum : String
279+ let nsp = messageGroups![ 2 ]
280+
281+ if nsp == " " && socket. nsp != nil {
282+ return
283+ }
284+
285+ if nsp == " " {
286+ ackNum = String ( arr [ 0 ... arr. count- 1 ] )
287+ } else {
288+ ackNum = messageGroups![ 3 ]
289+ }
290+
291+ let ackData : AnyObject ? = self . parseData ( " [ \( messageGroups![ 4 ] ) ] " )
292+ socket. handleAck ( ackNum. toInt ( ) !, data: ackData)
293+
294+ return
286295 }
287-
288- let ackData : AnyObject ? = self . parseData ( messageGroups![ 4 ] )
289- socket. handleAck ( ackNum. toInt ( ) !, data: ackData)
290-
291- return
292296 }
293297 /**
294298 End Check for message
0 commit comments