refactor socketpacket

This commit is contained in:
Erik 2016-02-17 14:09:05 -05:00
parent 12f9207d8a
commit c795f9fb25
3 changed files with 33 additions and 43 deletions

View File

@ -253,8 +253,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketParsable
return return
} }
dispatch_async(emitQueue) { dispatch_async(emitQueue) {[emitData = [event] + items] in
self._emit([event] + items) self._emit(emitData)
} }
} }

View File

@ -161,7 +161,7 @@ extension Set where Element: ClientOption {
} }
extension NSDictionary { extension NSDictionary {
static func keyValueToSocketIOClientOption(key: String, value: AnyObject) -> SocketIOClientOption? { private static func keyValueToSocketIOClientOption(key: String, value: AnyObject) -> SocketIOClientOption? {
switch (key, value) { switch (key, value) {
case let ("connectParams", params as [String: AnyObject]): case let ("connectParams", params as [String: AnyObject]):
return .ConnectParams(params) return .ConnectParams(params)

View File

@ -87,38 +87,28 @@ struct SocketPacket {
} }
private func completeMessage(message: String, ack: Bool) -> String { private func completeMessage(message: String, ack: Bool) -> String {
var restOfMessage = "" let restOfMessage: String
if data.count == 0 { if data.count == 0 {
return message + "]" return message + "[]"
} }
for arg in data { do {
if arg is NSDictionary || arg is [AnyObject] { let jsonSend = try NSJSONSerialization.dataWithJSONObject(data,
do { options: NSJSONWritingOptions(rawValue: 0))
let jsonSend = try NSJSONSerialization.dataWithJSONObject(arg, guard let jsonString = String(data: jsonSend, encoding: NSUTF8StringEncoding) else {
options: NSJSONWritingOptions(rawValue: 0)) return "[]"
let jsonString = String(data: jsonSend, encoding: NSUTF8StringEncoding)
restOfMessage += jsonString! + ","
} catch {
DefaultSocketLogger.Logger.error("Error creating JSON object in SocketPacket.completeMessage",
type: SocketPacket.logType)
}
} else if let str = arg as? String {
restOfMessage += "\"" + (((str["\n"] <~ "\\\\n")["\r"] <~ "\\\\r")["\""] <~ "\\\\\"") + "\","
} else if arg is NSNull {
restOfMessage += "null,"
} else {
restOfMessage += "\(arg),"
} }
restOfMessage = jsonString
} catch {
DefaultSocketLogger.Logger.error("Error creating JSON object in SocketPacket.completeMessage",
type: SocketPacket.logType)
restOfMessage = "[]"
} }
if restOfMessage != "" { return message + restOfMessage
restOfMessage.removeAtIndex(restOfMessage.endIndex.predecessor())
}
return message + restOfMessage + "]"
} }
private func createAck() -> String { private func createAck() -> String {
@ -126,15 +116,15 @@ struct SocketPacket {
if type == .Ack { if type == .Ack {
if nsp == "/" { if nsp == "/" {
message = "3\(id)[" message = "3\(id)"
} else { } else {
message = "3\(nsp),\(id)[" message = "3\(nsp),\(id)"
} }
} else { } else {
if nsp == "/" { if nsp == "/" {
message = "6\(binary.count)-\(id)[" message = "6\(binary.count)-\(id)"
} else { } else {
message = "6\(binary.count)-\(nsp),\(id)[" message = "6\(binary.count)-\(nsp),\(id)"
} }
} }
@ -148,29 +138,29 @@ struct SocketPacket {
if type == .Event { if type == .Event {
if nsp == "/" { if nsp == "/" {
if id == -1 { if id == -1 {
message = "2[" message = "2"
} else { } else {
message = "2\(id)[" message = "2\(id)"
} }
} else { } else {
if id == -1 { if id == -1 {
message = "2\(nsp),[" message = "2\(nsp),"
} else { } else {
message = "2\(nsp),\(id)[" message = "2\(nsp),\(id)"
} }
} }
} else { } else {
if nsp == "/" { if nsp == "/" {
if id == -1 { if id == -1 {
message = "5\(binary.count)-[" message = "5\(binary.count)-"
} else { } else {
message = "5\(binary.count)-\(id)[" message = "5\(binary.count)-\(id)"
} }
} else { } else {
if id == -1 { if id == -1 {
message = "5\(binary.count)-\(nsp),[" message = "5\(binary.count)-\(nsp),"
} else { } else {
message = "5\(binary.count)-\(nsp),\(id)[" message = "5\(binary.count)-\(nsp),\(id)"
} }
} }
} }