work on parser
This commit is contained in:
parent
d13d185011
commit
911cac9c23
@ -220,9 +220,6 @@ class SocketParser {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Begin check for message
|
|
||||||
**/
|
|
||||||
var messageGroups:[String]?
|
var messageGroups:[String]?
|
||||||
|
|
||||||
let type = stringMessage.removeAtIndex(stringMessage.startIndex)
|
let type = stringMessage.removeAtIndex(stringMessage.startIndex)
|
||||||
@ -264,10 +261,7 @@ class SocketParser {
|
|||||||
socket.handleEvent(event, data: parsed, isInternalMessage: false,
|
socket.handleEvent(event, data: parsed, isInternalMessage: false,
|
||||||
wantsAck: ackNum.toInt(), withAckType: 3)
|
wantsAck: ackNum.toInt(), withAckType: 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else if type == "3" {
|
} else if type == "3" {
|
||||||
if let ackGroup = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
|
if let ackGroup = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
|
||||||
@ -290,13 +284,11 @@ class SocketParser {
|
|||||||
|
|
||||||
let ackData:AnyObject? = self.parseData("[\(messageGroups![4])]")
|
let ackData:AnyObject? = self.parseData("[\(messageGroups![4])]")
|
||||||
socket.handleAck(ackNum.toInt()!, data: ackData)
|
socket.handleAck(ackNum.toInt()!, data: ackData)
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
NSLog("Error in parsing message: %s", stringMessage)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
End Check for message
|
|
||||||
**/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handles binary data
|
// Handles binary data
|
||||||
@ -352,94 +344,87 @@ class SocketParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Tries to parse a message that contains binary
|
// Tries to parse a message that contains binary
|
||||||
class func parseBinaryMessage(message:String, socket:SocketIOClient) {
|
class func parseBinaryMessage(var message:String, socket:SocketIOClient) {
|
||||||
// NSLog(message)
|
// NSLog(message)
|
||||||
|
|
||||||
/**
|
|
||||||
Begin check for binary placeholders
|
|
||||||
**/
|
|
||||||
var binaryGroup:[String]?
|
var binaryGroup:[String]?
|
||||||
|
|
||||||
if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(\".*?\")?,?(.*)?\\]$",
|
let type = message.removeAtIndex(message.startIndex)
|
||||||
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
|
|
||||||
binaryGroup = groups
|
if type == "5" {
|
||||||
} else if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
|
if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(\".*?\")?,?(.*)?\\]$",
|
||||||
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
|
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
|
||||||
binaryGroup = groups
|
binaryGroup = groups
|
||||||
|
|
||||||
|
var ackNum:String
|
||||||
|
var event:String
|
||||||
|
var mutMessageObject:String
|
||||||
|
var namespace:String?
|
||||||
|
let numberOfPlaceholders = binaryGroup![1]
|
||||||
|
|
||||||
|
namespace = binaryGroup![2]
|
||||||
|
if binaryGroup![3] != "" {
|
||||||
|
ackNum = binaryGroup![3] as String
|
||||||
|
} else if socket.nsp == nil && binaryGroup![2] != "" {
|
||||||
|
ackNum = binaryGroup![2]
|
||||||
|
} else {
|
||||||
|
ackNum = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
event = (binaryGroup![4]["\""] ~= "") as String
|
||||||
|
mutMessageObject = binaryGroup![5]
|
||||||
|
|
||||||
|
if namespace == "" && socket.nsp != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
|
||||||
|
~= "\"~~$2\""
|
||||||
|
|
||||||
|
var mes:SocketEvent
|
||||||
|
if ackNum == "" {
|
||||||
|
mes = SocketEvent(event: event, args: placeholdersRemoved,
|
||||||
|
placeholders: numberOfPlaceholders.toInt()!)
|
||||||
|
} else {
|
||||||
|
socket.currentAck = ackNum.toInt()!
|
||||||
|
mes = SocketEvent(event: event, args: placeholdersRemoved,
|
||||||
|
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt())
|
||||||
|
}
|
||||||
|
|
||||||
|
socket.waitingData.append(mes)
|
||||||
|
}
|
||||||
|
} else if type == "6" {
|
||||||
|
if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
|
||||||
|
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
|
||||||
|
binaryGroup = groups
|
||||||
|
|
||||||
|
let numberOfPlaceholders = binaryGroup![1]
|
||||||
|
var ackNum:String
|
||||||
|
var nsp:String
|
||||||
|
|
||||||
|
if binaryGroup![3] == "" {
|
||||||
|
ackNum = binaryGroup![2]
|
||||||
|
nsp = ""
|
||||||
|
} else {
|
||||||
|
ackNum = binaryGroup![3]
|
||||||
|
nsp = binaryGroup![2]
|
||||||
|
}
|
||||||
|
|
||||||
|
if nsp == "" && socket.nsp != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var mutMessageObject = binaryGroup![5]
|
||||||
|
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
|
||||||
|
~= "\"~~$2\""
|
||||||
|
|
||||||
|
let event = SocketEvent(event: "", args: placeholdersRemoved,
|
||||||
|
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt(), justAck: true)
|
||||||
|
|
||||||
|
socket.waitingData.append(event)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
NSLog("Error in parsing binary message: %s", message)
|
NSLog("Error in parsing binary message: %s", message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if binaryGroup![1].hasPrefix("5") {
|
|
||||||
// println(binaryGroup)
|
|
||||||
var ackNum:String
|
|
||||||
var event:String
|
|
||||||
var mutMessageObject:String
|
|
||||||
var namespace:String?
|
|
||||||
var numberOfPlaceholders:String
|
|
||||||
|
|
||||||
let messageType = binaryGroup![1]
|
|
||||||
|
|
||||||
namespace = binaryGroup![2]
|
|
||||||
if binaryGroup![3] != "" {
|
|
||||||
ackNum = binaryGroup![3] as String
|
|
||||||
} else if socket.nsp == nil && binaryGroup![2] != "" {
|
|
||||||
ackNum = binaryGroup![2]
|
|
||||||
} else {
|
|
||||||
ackNum = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
numberOfPlaceholders = (messageType["5"] ~= "") as String
|
|
||||||
event = (binaryGroup![4]["\""] ~= "") as String
|
|
||||||
mutMessageObject = binaryGroup![5]
|
|
||||||
|
|
||||||
if namespace == "" && socket.nsp != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
|
|
||||||
~= "\"~~$2\""
|
|
||||||
|
|
||||||
var mes:SocketEvent
|
|
||||||
if ackNum == "" {
|
|
||||||
mes = SocketEvent(event: event, args: placeholdersRemoved,
|
|
||||||
placeholders: numberOfPlaceholders.toInt()!)
|
|
||||||
} else {
|
|
||||||
socket.currentAck = ackNum.toInt()!
|
|
||||||
mes = SocketEvent(event: event, args: placeholdersRemoved,
|
|
||||||
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt())
|
|
||||||
}
|
|
||||||
|
|
||||||
socket.waitingData.append(mes)
|
|
||||||
} else if binaryGroup![1].hasPrefix("6") {
|
|
||||||
let messageType = binaryGroup![1]
|
|
||||||
let numberOfPlaceholders = (messageType["6"] ~= "") as String
|
|
||||||
var ackNum:String
|
|
||||||
var nsp:String
|
|
||||||
|
|
||||||
if binaryGroup![3] == "" {
|
|
||||||
ackNum = binaryGroup![2]
|
|
||||||
nsp = ""
|
|
||||||
} else {
|
|
||||||
ackNum = binaryGroup![3]
|
|
||||||
nsp = binaryGroup![2]
|
|
||||||
}
|
|
||||||
|
|
||||||
if nsp == "" && socket.nsp != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var mutMessageObject = binaryGroup![5]
|
|
||||||
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
|
|
||||||
~= "\"~~$2\""
|
|
||||||
|
|
||||||
let event = SocketEvent(event: "", args: placeholdersRemoved,
|
|
||||||
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt(), justAck: true)
|
|
||||||
|
|
||||||
socket.waitingData.append(event)
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
End check for binary placeholders
|
|
||||||
**/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user