diff --git a/SwiftIO/SocketEngine.swift b/SwiftIO/SocketEngine.swift index 3b6428e..9bcb27e 100644 --- a/SwiftIO/SocketEngine.swift +++ b/SwiftIO/SocketEngine.swift @@ -409,7 +409,10 @@ public class SocketEngine: NSObject, WebSocketDelegate { } 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) { @@ -447,6 +450,8 @@ public class SocketEngine: NSObject, WebSocketDelegate { } else if type == PacketType.NOOP.rawValue { self.doPoll() return + } else if type == PacketType.PONG.rawValue { + return } if message == PacketType.CLOSE.rawValue { diff --git a/SwiftIO/SocketParser.swift b/SwiftIO/SocketParser.swift index e6d2a31..b7346f5 100644 --- a/SwiftIO/SocketParser.swift +++ b/SwiftIO/SocketParser.swift @@ -346,7 +346,6 @@ class SocketParser { // Tries to parse a message that contains binary class func parseBinaryMessage(var message:String, socket:SocketIOClient) { // NSLog(message) - var binaryGroup:[String]? let type = message.removeAtIndex(message.startIndex) @@ -413,7 +412,7 @@ class SocketParser { if nsp == "" && socket.nsp != nil { return } - var mutMessageObject = binaryGroup![5] + var mutMessageObject = binaryGroup![4] let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"] ~= "\"~~$2\"" diff --git a/SwiftIO/SwiftRegex.swift b/SwiftIO/SwiftRegex.swift index 19ac4bf..49f9524 100644 --- a/SwiftIO/SwiftRegex.swift +++ b/SwiftIO/SwiftRegex.swift @@ -43,7 +43,7 @@ public class SwiftRegex: NSObject, BooleanType { } 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? {