This commit is contained in:
Erik 2015-09-17 09:06:09 -04:00
parent d0a57ca353
commit 2f2bd49045

View File

@ -99,6 +99,19 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
deinit { deinit {
Logger.log("Engine is being deinit", type: logType) Logger.log("Engine is being deinit", type: logType)
} }
private func checkIfMessageIsBase64Binary(var message: String) {
if message.hasPrefix("b4") {
// binary in base64 string
message.removeRange(Range<String.Index>(start: message.startIndex,
end: message.startIndex.advancedBy(2)))
if let data = NSData(base64EncodedString: message,
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
client?.parseBinaryData(data)
}
}
}
public func close(fast fast: Bool) { public func close(fast fast: Bool) {
Logger.log("Engine is being closed. Fast: %@", type: logType, args: fast) Logger.log("Engine is being closed. Fast: %@", type: logType, args: fast)
@ -364,19 +377,6 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
} }
} }
private func checkIfMessageIsBase64Binary(var message: String) {
if message.hasPrefix("b4") {
// binary in base64 string
message.removeRange(Range<String.Index>(start: message.startIndex,
end: message.startIndex.advancedBy(2)))
if let data = NSData(base64EncodedString: message,
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
client?.parseBinaryData(data)
}
}
}
private func handleMessage(message: String) { private func handleMessage(message: String) {
client?.parseSocketMessage(message) client?.parseSocketMessage(message)
} }
@ -492,11 +492,17 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
var reader = SocketStringReader(message: str) var reader = SocketStringReader(message: str)
while reader.hasNext { while reader.hasNext {
let n = reader.readUntilStringOccurence(":") if let n = Int(reader.readUntilStringOccurence(":")) {
let str = reader.read(Int(n)!) let str = reader.read(n)
dispatch_async(handleQueue) { dispatch_async(handleQueue) {
self.parseEngineMessage(str, fromPolling: true) self.parseEngineMessage(str, fromPolling: true)
}
} else {
dispatch_async(handleQueue) {
self.parseEngineMessage(str, fromPolling: true)
}
break
} }
} }
} }