simplify socketengine
This commit is contained in:
parent
80cfe8c534
commit
a634f5bacc
@ -69,11 +69,11 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
var urlWebSocket: String?
|
var urlWebSocket: String?
|
||||||
var ws: WebSocket?
|
var ws: WebSocket?
|
||||||
|
|
||||||
public enum PacketType: Int {
|
@objc public enum PacketType: Int {
|
||||||
case Open, Close, Ping, Pong, Message, Upgrade, Noop
|
case Open, Close, Ping, Pong, Message, Upgrade, Noop
|
||||||
|
|
||||||
init?(str: String?) {
|
init?(str: String) {
|
||||||
if let value = Int(str ?? ""), raw = PacketType(rawValue: value) {
|
if let value = Int(str), raw = PacketType(rawValue: value) {
|
||||||
self = raw
|
self = raw
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
@ -547,7 +547,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
fixDoubleUTF8(&message)
|
fixDoubleUTF8(&message)
|
||||||
}
|
}
|
||||||
|
|
||||||
let type = PacketType(str: (message["^(\\d)"].groups()?[1])) ?? {
|
let type = PacketType(str: (message["^(\\d)"].groups()?[1]) ?? "") ?? {
|
||||||
self.checkIfMessageIsBase64Binary(message)
|
self.checkIfMessageIsBase64Binary(message)
|
||||||
return PacketType.Noop
|
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
|
// Delagate methods
|
||||||
|
|
||||||
public func websocketDidConnect(socket:WebSocket) {
|
public func websocketDidConnect(socket:WebSocket) {
|
||||||
|
|||||||
@ -36,9 +36,11 @@ struct SocketGenericParser {
|
|||||||
let range = Range<String.Index>(start: startIndex, end: message.endIndex)
|
let range = Range<String.Index>(start: startIndex, end: message.endIndex)
|
||||||
let subString = message.substringWithRange(range) as NSString
|
let subString = message.substringWithRange(range) as NSString
|
||||||
let foundRange = subString.rangeOfString(string)
|
let foundRange = subString.rangeOfString(string)
|
||||||
|
|
||||||
if foundRange.location == Int.max {
|
if foundRange.location == Int.max {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
currentIndex = currentIndex + foundRange.location
|
currentIndex = currentIndex + foundRange.location
|
||||||
|
|
||||||
return subString.substringToIndex(foundRange.location)
|
return subString.substringToIndex(foundRange.location)
|
||||||
|
|||||||
@ -30,6 +30,7 @@ class SocketParser {
|
|||||||
|
|
||||||
private static func handleEvent(p: SocketPacket, socket: SocketIOClient) {
|
private static func handleEvent(p: SocketPacket, socket: SocketIOClient) {
|
||||||
guard isCorrectNamespace(p.nsp, socket) else { return }
|
guard isCorrectNamespace(p.nsp, socket) else { return }
|
||||||
|
|
||||||
socket.handleEvent(p.event, data: p.args,
|
socket.handleEvent(p.event, data: p.args,
|
||||||
isInternalMessage: false, wantsAck: p.id)
|
isInternalMessage: false, wantsAck: p.id)
|
||||||
}
|
}
|
||||||
@ -59,10 +60,9 @@ class SocketParser {
|
|||||||
// Translation of socket.io-client#decodeString
|
// Translation of socket.io-client#decodeString
|
||||||
static func parseString(message: String) -> SocketPacket? {
|
static func parseString(message: String) -> SocketPacket? {
|
||||||
var parser = SocketGenericParser(message: message, currentIndex: 0)
|
var parser = SocketGenericParser(message: message, currentIndex: 0)
|
||||||
guard let typeString = parser.read(1),
|
|
||||||
let type = SocketPacket.PacketType(str: typeString) else {
|
guard let typeString = parser.read(1), type = SocketPacket.PacketType(str: typeString)
|
||||||
return nil
|
else {return nil}
|
||||||
}
|
|
||||||
|
|
||||||
if parser.messageCharacters.count == 1 {
|
if parser.messageCharacters.count == 1 {
|
||||||
return SocketPacket(type: type, nsp: "/")
|
return SocketPacket(type: type, nsp: "/")
|
||||||
@ -129,6 +129,7 @@ class SocketParser {
|
|||||||
Logger.error("Parsing message", type: "SocketParser", args: message)
|
Logger.error("Parsing message", type: "SocketParser", args: message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.log("Decoded packet as: %@", type: "SocketParser", args: pack.description)
|
Logger.log("Decoded packet as: %@", type: "SocketParser", args: pack.description)
|
||||||
|
|
||||||
switch pack.type {
|
switch pack.type {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user