This commit is contained in:
Erik 2015-04-09 01:39:27 -04:00
parent 7adf624dca
commit a9cf6885aa
4 changed files with 71 additions and 61 deletions

View File

@ -349,7 +349,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
public func open(opts:[String: AnyObject]? = nil) { public func open(opts:[String: AnyObject]? = nil) {
if self.connected { if self.connected {
self.client?.engineDidError("Engine tried to open while connected") self.client?.didError("Engine tried to open while connected")
return return
} }
@ -478,9 +478,8 @@ public class SocketEngine: NSObject, WebSocketDelegate {
message.removeAtIndex(message.startIndex) message.removeAtIndex(message.startIndex)
let mesData = message.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! let mesData = message.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
if let json = NSJSONSerialization.JSONObjectWithData(mesData, if let json = NSJSONSerialization.JSONObjectWithData(mesData, options: NSJSONReadingOptions.AllowFragments,
options: NSJSONReadingOptions.AllowFragments, error: &err) as? NSDictionary, error: &err) as? NSDictionary, let sid = json["sid"] as? String {
let sid = json["sid"] as? String {
self.sid = sid self.sid = sid
self._connected = true self._connected = true
@ -492,7 +491,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
self.pingInterval = pingInterval / 1000 self.pingInterval = pingInterval / 1000
} }
} else { } else {
self.client?.engineDidError("Engine failed to handshake") self.client?.didError("Engine failed to handshake")
return return
} }

View File

@ -32,7 +32,7 @@ import Foundation
var socketURL:String {get} var socketURL:String {get}
var secure:Bool {get} var secure:Bool {get}
func engineDidError(reason:String) func didError(reason:AnyObject)
func engineDidForceClose(reason:String) func engineDidForceClose(reason:String)
func parseSocketMessage(msg:String) func parseSocketMessage(msg:String)
func parseBinaryData(data:NSData) func parseBinaryData(data:NSData)

View File

@ -226,6 +226,15 @@ public class SocketIOClient: NSObject, SocketEngineClient {
self.handleEvent("connect", data: nil, isInternalMessage: false) self.handleEvent("connect", data: nil, isInternalMessage: false)
} }
/// error
public func didError(reason:AnyObject) {
if !(reason is [AnyObject]) {
self.handleEvent("error", data: [reason], isInternalMessage: true)
} else {
self.handleEvent("error", data: reason as? [AnyObject], isInternalMessage: true)
}
}
/** /**
Same as close Same as close
*/ */
@ -321,11 +330,6 @@ public class SocketIOClient: NSObject, SocketEngineClient {
} }
} }
/// Engine error
public func engineDidError(reason:String) {
self.handleEvent("error", data: [reason], isInternalMessage: true)
}
/// Server wants us to die /// Server wants us to die
public func engineDidForceClose(reason:String) { public func engineDidForceClose(reason:String) {
if self.closed { if self.closed {

View File

@ -144,11 +144,16 @@ class SocketParser {
id = c.toInt() id = c.toInt()
} }
if i + 1 < arr.count { if ++i < arr.count {
let d = String(arr[++i...arr.count-1]) let d = String(arr[i...arr.count-1])
let noPlaceholders = d["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"] ~= "\"~~$2\"" let noPlaceholders = d["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"] ~= "\"~~$2\""
let data:[AnyObject]
let data = SocketParser.parseData(noPlaceholders) as! [AnyObject] if let isArr = SocketParser.parseData(noPlaceholders) as? [AnyObject] {
data = isArr
} else {
data = [noPlaceholders]
}
return SocketPacket(type: SocketPacketType(str: type), data: data, return SocketPacket(type: SocketPacketType(str: type), data: data,
nsp: nsp, placeholders: placeholders, id: id) nsp: nsp, placeholders: placeholders, id: id)
@ -224,6 +229,8 @@ class SocketParser {
} }
} else if p.type == SocketPacketType.DISCONNECT { } else if p.type == SocketPacketType.DISCONNECT {
socket.engineDidForceClose("Got Disconnect") socket.engineDidForceClose("Got Disconnect")
} else if p.type == SocketPacketType.ERROR {
socket.didError(p.data == nil ? "Error" : p.data!)
} }
} }