simplify socketengine

This commit is contained in:
Erik 2015-09-10 16:32:57 -04:00
parent 80cfe8c534
commit a634f5bacc
3 changed files with 11 additions and 25 deletions

View File

@ -69,11 +69,11 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
var urlWebSocket: String?
var ws: WebSocket?
public enum PacketType: Int {
@objc public enum PacketType: Int {
case Open, Close, Ping, Pong, Message, Upgrade, Noop
init?(str: String?) {
if let value = Int(str ?? ""), raw = PacketType(rawValue: value) {
init?(str: String) {
if let value = Int(str), raw = PacketType(rawValue: value) {
self = raw
} else {
return nil
@ -547,7 +547,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
fixDoubleUTF8(&message)
}
let type = PacketType(str: (message["^(\\d)"].groups()?[1])) ?? {
let type = PacketType(str: (message["^(\\d)"].groups()?[1]) ?? "") ?? {
self.checkIfMessageIsBase64Binary(message)
return PacketType.Noop
}()
@ -687,23 +687,6 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
}
}
/**
Write a message, independent of transport. For Objective-C. withData should be an NSArray of NSData
*/
public func writeObjc(msg: String, withType type: Int, withData data: NSArray?) {
if let pType = PacketType(rawValue: type) {
var arr = [NSData]()
if let data = data {
for d in data {
arr.append(d as! NSData)
}
}
write(msg, withType: pType, withData: arr)
}
}
// Delagate methods
public func websocketDidConnect(socket:WebSocket) {

View File

@ -36,9 +36,11 @@ struct SocketGenericParser {
let range = Range<String.Index>(start: startIndex, end: message.endIndex)
let subString = message.substringWithRange(range) as NSString
let foundRange = subString.rangeOfString(string)
if foundRange.location == Int.max {
return nil
}
currentIndex = currentIndex + foundRange.location
return subString.substringToIndex(foundRange.location)

View File

@ -30,6 +30,7 @@ class SocketParser {
private static func handleEvent(p: SocketPacket, socket: SocketIOClient) {
guard isCorrectNamespace(p.nsp, socket) else { return }
socket.handleEvent(p.event, data: p.args,
isInternalMessage: false, wantsAck: p.id)
}
@ -59,10 +60,9 @@ class SocketParser {
// Translation of socket.io-client#decodeString
static func parseString(message: String) -> SocketPacket? {
var parser = SocketGenericParser(message: message, currentIndex: 0)
guard let typeString = parser.read(1),
let type = SocketPacket.PacketType(str: typeString) else {
return nil
}
guard let typeString = parser.read(1), type = SocketPacket.PacketType(str: typeString)
else {return nil}
if parser.messageCharacters.count == 1 {
return SocketPacket(type: type, nsp: "/")
@ -129,6 +129,7 @@ class SocketParser {
Logger.error("Parsing message", type: "SocketParser", args: message)
return
}
Logger.log("Decoded packet as: %@", type: "SocketParser", args: pack.description)
switch pack.type {