Skip to content

Commit d13d185

Browse files
committed
work on parser
1 parent 66aaa52 commit d13d185

File tree

1 file changed

+66
-62
lines changed

1 file changed

+66
-62
lines changed

Diff for: SwiftIO/SocketParser.swift

+66-62
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)