Merge branch 'master' into 1.2

This commit is contained in:
Erik 2015-03-19 08:30:08 -04:00
commit 15954f36f5
3 changed files with 144 additions and 151 deletions

View File

@ -409,7 +409,10 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
private func parseEngineData(data:NSData) { private func parseEngineData(data:NSData) {
self.client.parseBinaryData(data.subdataWithRange(NSMakeRange(1, data.length - 1))) dispatch_async(self.client.handleQueue) {[weak self] in
self?.client.parseBinaryData(data.subdataWithRange(NSMakeRange(1, data.length - 1)))
return
}
} }
private func parseEngineMessage(var message:String) { private func parseEngineMessage(var message:String) {
@ -447,6 +450,8 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} else if type == PacketType.NOOP.rawValue { } else if type == PacketType.NOOP.rawValue {
self.doPoll() self.doPoll()
return return
} else if type == PacketType.PONG.rawValue {
return
} }
if message == PacketType.CLOSE.rawValue { if message == PacketType.CLOSE.rawValue {

View File

@ -185,7 +185,7 @@ class SocketParser {
} }
// Parses messages recieved // Parses messages recieved
class func parseSocketMessage(stringMessage:String, socket:SocketIOClient) { class func parseSocketMessage(var stringMessage:String, socket:SocketIOClient) {
if stringMessage == "" { if stringMessage == "" {
return return
} }
@ -220,28 +220,22 @@ class SocketParser {
return return
} }
/**
Begin check for message
**/
var messageGroups:[String]? var messageGroups:[String]?
let type = stringMessage.removeAtIndex(stringMessage.startIndex)
if type == "2" {
if let groups = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[\"(.*?)\",?(.*?)?\\]$", if let groups = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[\"(.*?)\",?(.*?)?\\]$",
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() { NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
messageGroups = groups messageGroups = groups
} else if let ackGroup = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
messageGroups = ackGroup
} else {
NSLog("Error parsing message: %s", stringMessage)
return
}
if messageGroups![1].hasPrefix("2") {
var mesNum = messageGroups![1] var mesNum = messageGroups![1]
var ackNum:String var ackNum:String
var namespace:String? var namespace:String?
if messageGroups![3] != "" { if mesNum == "" {
ackNum = ""
} else if messageGroups![3] != "" {
ackNum = messageGroups![3] ackNum = messageGroups![3]
} else { } else {
let range = Range<String.Index>(start: mesNum.startIndex, let range = Range<String.Index>(start: mesNum.startIndex,
@ -267,10 +261,13 @@ 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 messageGroups![1].hasPrefix("3") { }
} else if type == "3" {
if let ackGroup = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
messageGroups = ackGroup
let arr = Array(messageGroups![1]) let arr = Array(messageGroups![1])
var ackNum:String var ackNum:String
let nsp = messageGroups![2] let nsp = messageGroups![2]
@ -280,19 +277,18 @@ class SocketParser {
} }
if nsp == "" { if nsp == "" {
ackNum = String(arr[1...arr.count-1]) ackNum = String(arr[0...arr.count-1])
} else { } else {
ackNum = messageGroups![3] ackNum = messageGroups![3]
} }
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)
}
} else {
NSLog("Error in parsing message: %s", stringMessage)
return return
} }
/**
End Check for message
**/
} }
// Handles binary data // Handles binary data
@ -348,34 +344,22 @@ 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]?
let type = message.removeAtIndex(message.startIndex)
if type == "5" {
if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(\".*?\")?,?(.*)?\\]$", if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(\".*?\")?,?(.*)?\\]$",
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() { NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
binaryGroup = groups binaryGroup = groups
} else if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
binaryGroup = groups
} else {
NSLog("Error in parsing binary message: %s", message)
return
}
if binaryGroup![1].hasPrefix("5") {
// println(binaryGroup)
var ackNum:String var ackNum:String
var event:String var event:String
var mutMessageObject:String var mutMessageObject:String
var namespace:String? var namespace:String?
var numberOfPlaceholders:String let numberOfPlaceholders = binaryGroup![1]
let messageType = binaryGroup![1]
namespace = binaryGroup![2] namespace = binaryGroup![2]
if binaryGroup![3] != "" { if binaryGroup![3] != "" {
@ -386,7 +370,6 @@ class SocketParser {
ackNum = "" ackNum = ""
} }
numberOfPlaceholders = (messageType["5"] ~= "") as String
event = (binaryGroup![4]["\""] ~= "") as String event = (binaryGroup![4]["\""] ~= "") as String
mutMessageObject = binaryGroup![5] mutMessageObject = binaryGroup![5]
@ -408,9 +391,13 @@ class SocketParser {
} }
socket.waitingData.append(mes) socket.waitingData.append(mes)
} else if binaryGroup![1].hasPrefix("6") { }
let messageType = binaryGroup![1] } else if type == "6" {
let numberOfPlaceholders = (messageType["6"] ~= "") as String if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
binaryGroup = groups
let numberOfPlaceholders = binaryGroup![1]
var ackNum:String var ackNum:String
var nsp:String var nsp:String
@ -425,7 +412,7 @@ class SocketParser {
if nsp == "" && socket.nsp != nil { if nsp == "" && socket.nsp != nil {
return return
} }
var mutMessageObject = binaryGroup![5] var mutMessageObject = binaryGroup![4]
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"] let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
~= "\"~~$2\"" ~= "\"~~$2\""
@ -434,8 +421,9 @@ class SocketParser {
socket.waitingData.append(event) socket.waitingData.append(event)
} }
/** } else {
End check for binary placeholders NSLog("Error in parsing binary message: %s", message)
**/ return
}
} }
} }

View File

@ -43,7 +43,7 @@ public class SwiftRegex: NSObject, BooleanType {
} }
final var targetRange: NSRange { final var targetRange: NSRange {
return NSRange(location: 0,length: target.utf16Count) return NSRange(location: 0,length: countElements(target.utf16))
} }
final func substring(range: NSRange) -> String? { final func substring(range: NSRange) -> String? {