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