Skip to content

Commit 2f2bd49

Browse files
committed
fix #181
1 parent d0a57ca commit 2f2bd49

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

SocketIOClientSwift/SocketEngine.swift

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,19 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
9999
deinit {
100100
Logger.log("Engine is being deinit", type: logType)
101101
}
102+
103+
private func checkIfMessageIsBase64Binary(var message: String) {
104+
if message.hasPrefix("b4") {
105+
// binary in base64 string
106+
message.removeRange(Range<String.Index>(start: message.startIndex,
107+
end: message.startIndex.advancedBy(2)))
108+
109+
if let data = NSData(base64EncodedString: message,
110+
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
111+
client?.parseBinaryData(data)
112+
}
113+
}
114+
}
102115

103116
public func close(fast fast: Bool) {
104117
Logger.log("Engine is being closed. Fast: %@", type: logType, args: fast)
@@ -364,19 +377,6 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
364377
}
365378
}
366379

367-
private func checkIfMessageIsBase64Binary(var message: String) {
368-
if message.hasPrefix("b4") {
369-
// binary in base64 string
370-
message.removeRange(Range<String.Index>(start: message.startIndex,
371-
end: message.startIndex.advancedBy(2)))
372-
373-
if let data = NSData(base64EncodedString: message,
374-
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
375-
client?.parseBinaryData(data)
376-
}
377-
}
378-
}
379-
380380
private func handleMessage(message: String) {
381381
client?.parseSocketMessage(message)
382382
}
@@ -492,11 +492,17 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
492492
var reader = SocketStringReader(message: str)
493493

494494
while reader.hasNext {
495-
let n = reader.readUntilStringOccurence(":")
496-
let str = reader.read(Int(n)!)
497-
498-
dispatch_async(handleQueue) {
499-
self.parseEngineMessage(str, fromPolling: true)
495+
if let n = Int(reader.readUntilStringOccurence(":")) {
496+
let str = reader.read(n)
497+
498+
dispatch_async(handleQueue) {
499+
self.parseEngineMessage(str, fromPolling: true)
500+
}
501+
} else {
502+
dispatch_async(handleQueue) {
503+
self.parseEngineMessage(str, fromPolling: true)
504+
}
505+
break
500506
}
501507
}
502508
}

0 commit comments

Comments
 (0)