Simplified SocketEngine.swift
This commit is contained in:
parent
d2ae3705ff
commit
4f2040fbfd
@ -350,8 +350,10 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
// We had packets waiting for send when we upgraded
|
// We had packets waiting for send when we upgraded
|
||||||
// Send them raw
|
// Send them raw
|
||||||
private func flushWaitingForPostToWebSocket() {
|
private func flushWaitingForPostToWebSocket() {
|
||||||
|
if let ws = ws {
|
||||||
for msg in postWait {
|
for msg in postWait {
|
||||||
ws?.writeString(msg)
|
ws.writeString(msg)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
postWait.removeAll(keepCapacity: true)
|
postWait.removeAll(keepCapacity: true)
|
||||||
@ -495,7 +497,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
var n = 0
|
var n = 0
|
||||||
var msg = ""
|
var msg = ""
|
||||||
|
|
||||||
func testLength(length:String, inout n:Int) -> Bool {
|
func testLength(length: String, inout n: Int) -> Bool {
|
||||||
if let num = Int(length) {
|
if let num = Int(length) {
|
||||||
n = num
|
n = num
|
||||||
return false
|
return false
|
||||||
@ -525,8 +527,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
if msg.characters.count != 0 {
|
if msg.characters.count != 0 {
|
||||||
// Be sure to capture the value of the msg
|
// Be sure to capture the value of the msg
|
||||||
dispatch_async(handleQueue) {[weak self, msg] in
|
dispatch_async(handleQueue) {
|
||||||
self?.parseEngineMessage(msg, fromPolling: true)
|
self.parseEngineMessage(msg, fromPolling: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -549,7 +551,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
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 .Noop
|
||||||
}()
|
}()
|
||||||
|
|
||||||
switch type {
|
switch type {
|
||||||
@ -608,13 +610,11 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
postWait.append(strMsg)
|
postWait.append(strMsg)
|
||||||
|
|
||||||
if let datas = datas {
|
for data in datas ?? [] {
|
||||||
for data in datas {
|
|
||||||
let (_, b64Data) = createBinaryDataForSend(data)
|
let (_, b64Data) = createBinaryDataForSend(data)
|
||||||
|
|
||||||
postWait.append(b64Data!)
|
postWait.append(b64Data!)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if !waitingForPost {
|
if !waitingForPost {
|
||||||
flushWaitingForPost()
|
flushWaitingForPost()
|
||||||
@ -629,26 +629,22 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
|
|
||||||
ws?.writeString("\(type.rawValue)\(str)")
|
ws?.writeString("\(type.rawValue)\(str)")
|
||||||
|
|
||||||
if let datas = datas {
|
for data in datas ?? [] {
|
||||||
for data in datas {
|
|
||||||
let (data, _) = createBinaryDataForSend(data)
|
let (data, _) = createBinaryDataForSend(data)
|
||||||
if data != nil {
|
if data != nil {
|
||||||
ws?.writeData(data!)
|
ws?.writeData(data!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Starts the ping timer
|
// Starts the ping timer
|
||||||
private func startPingTimer() {
|
private func startPingTimer() {
|
||||||
guard pingInterval != nil else {
|
if let pingInterval = pingInterval {
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
pingTimer?.invalidate()
|
pingTimer?.invalidate()
|
||||||
dispatch_async(dispatch_get_main_queue()) {[weak self] in
|
pingTimer = nil
|
||||||
if let this = self {
|
|
||||||
this.pingTimer = NSTimer.scheduledTimerWithTimeInterval(this.pingInterval!, target: this,
|
dispatch_async(dispatch_get_main_queue()) {
|
||||||
|
self.pingTimer = NSTimer.scheduledTimerWithTimeInterval(pingInterval, target: self,
|
||||||
selector: Selector("sendPing"), userInfo: nil, repeats: true)
|
selector: Selector("sendPing"), userInfo: nil, repeats: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -672,16 +668,16 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
Write a message, independent of transport.
|
Write a message, independent of transport.
|
||||||
*/
|
*/
|
||||||
public func write(msg: String, withType type: PacketType, withData data: [NSData]?) {
|
public func write(msg: String, withType type: PacketType, withData data: [NSData]?) {
|
||||||
dispatch_async(emitQueue) {[weak self] in
|
dispatch_async(emitQueue) {
|
||||||
if let this = self where this.connected {
|
if self.connected {
|
||||||
if this.websocket {
|
if self.websocket {
|
||||||
Logger.log("Writing ws: %@ has data: %@", type: this.logType, args: msg,
|
Logger.log("Writing ws: %@ has data: %@", type: self.logType, args: msg,
|
||||||
data == nil ? false : true)
|
data == nil ? false : true)
|
||||||
this.sendWebSocketMessage(msg, withType: type, datas: data)
|
self.sendWebSocketMessage(msg, withType: type, datas: data)
|
||||||
} else {
|
} else {
|
||||||
Logger.log("Writing poll: %@ has data: %@", type: this.logType, args: msg,
|
Logger.log("Writing poll: %@ has data: %@", type: self.logType, args: msg,
|
||||||
data == nil ? false : true)
|
data == nil ? false : true)
|
||||||
this.sendPollMessage(msg, withType: type, datas: data)
|
self.sendPollMessage(msg, withType: type, datas: data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user