This commit is contained in:
Erik 2015-03-19 14:04:02 -04:00
parent 54b2da8395
commit 72d5c07de1

View File

@ -30,7 +30,8 @@ extension String {
} }
} }
private typealias PollWaitQueue = [() -> Void] private typealias Probe = (msg:String, type:PacketType, data:[NSData]?)
private typealias ProbeWaitQueue = [Probe]
public enum PacketType: String { public enum PacketType: String {
case OPEN = "0" case OPEN = "0"
@ -59,7 +60,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
private var postWait = [String]() private var postWait = [String]()
private var _polling = true private var _polling = true
private var probing = false private var probing = false
private var probeWait = PollWaitQueue() private var probeWait = ProbeWaitQueue()
private var waitingForPoll = false private var waitingForPoll = false
private var waitingForPost = false private var waitingForPost = false
private var _websocket = false private var _websocket = false
@ -204,7 +205,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
for waiter in self!.probeWait { for waiter in self!.probeWait {
waiter() self?.write(waiter.msg, withType: waiter.type, withData: waiter.data)
} }
self?.probeWait.removeAll(keepCapacity: false) self?.probeWait.removeAll(keepCapacity: false)
@ -481,23 +482,10 @@ public class SocketEngine: NSObject, WebSocketDelegate {
Send a message with type 4 Send a message with type 4
*/ */
public func send(msg:String, datas:[NSData]? = nil) { public func send(msg:String, datas:[NSData]? = nil) {
let _send = {[weak self] (msg:String, datas:[NSData]?) -> () -> Void in if self.probing {
return { self.probeWait.append((msg, PacketType.MESSAGE, datas))
self?.write(msg, withType: PacketType.MESSAGE, withData: datas) } else {
return self.write(msg, withType: PacketType.MESSAGE, withData: datas)
}
}
dispatch_async(self.emitQueue) {[weak self] in
if self == nil {
return
}
if self!.probing {
self?.probeWait.append(_send(msg, datas))
} else {
_send(msg, datas)()
}
} }
} }