tweaks to polling
This commit is contained in:
parent
798d8a62ae
commit
718dc27089
@ -41,6 +41,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
private var fastUpgrade = false
|
||||
private var forcePolling = false
|
||||
private var forceWebsockets = false
|
||||
private var invalidated = false
|
||||
private var pingInterval: Double?
|
||||
private var pingTimer: NSTimer?
|
||||
private var pingTimeout = 0.0 {
|
||||
@ -99,6 +100,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
|
||||
deinit {
|
||||
Logger.log("Engine is being deinit", type: logType)
|
||||
closed = true
|
||||
stopPolling()
|
||||
}
|
||||
|
||||
@ -248,19 +250,23 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
doRequest(req)
|
||||
doLongPoll(req)
|
||||
}
|
||||
|
||||
private func doRequest(req: NSMutableURLRequest) {
|
||||
if !polling || closed {
|
||||
return
|
||||
}
|
||||
private func doRequest(req: NSMutableURLRequest,
|
||||
withCallback callback: (NSData?, NSURLResponse?, NSError?) -> Void) {
|
||||
if !polling || closed || invalidated {
|
||||
return
|
||||
}
|
||||
|
||||
req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
|
||||
Logger.log("Doing polling request", type: logType)
|
||||
|
||||
Logger.log("Doing polling request", type: logType)
|
||||
req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
|
||||
session.dataTaskWithRequest(req, completionHandler: callback).resume()
|
||||
}
|
||||
|
||||
session.dataTaskWithRequest(req) {[weak self] data, res, err in
|
||||
private func doLongPoll(req: NSMutableURLRequest) {
|
||||
doRequest(req) {[weak self] data, res, err in
|
||||
if let this = self {
|
||||
if err != nil || data == nil {
|
||||
if this.polling {
|
||||
@ -286,7 +292,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
} else if !this.closed && this.polling {
|
||||
this.doPoll()
|
||||
}
|
||||
}}.resume()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func flushProbeWait() {
|
||||
@ -345,13 +352,13 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
|
||||
Logger.log("POSTing: %@", type: logType, args: postStr)
|
||||
|
||||
session.dataTaskWithRequest(req) {[weak self] data, res, err in
|
||||
doRequest(req) {[weak self] data, res, err in
|
||||
if let this = self {
|
||||
if err != nil && this.polling {
|
||||
this.handlePollingFailed(err?.localizedDescription ?? "Error")
|
||||
return
|
||||
} else if err != nil {
|
||||
NSLog(err?.localizedDescription ?? "Error")
|
||||
Logger.error(err?.localizedDescription ?? "Error", type: this.logType)
|
||||
return
|
||||
}
|
||||
|
||||
@ -363,7 +370,8 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
this?.doPoll()
|
||||
}
|
||||
}
|
||||
}}.resume()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We had packets waiting for send when we upgraded
|
||||
@ -488,7 +496,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
doRequest(reqPolling)
|
||||
doLongPoll(reqPolling)
|
||||
}
|
||||
|
||||
private func parsePollingMessage(str: String) {
|
||||
@ -627,6 +635,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate {
|
||||
}
|
||||
|
||||
func stopPolling() {
|
||||
invalidated = true
|
||||
session.finishTasksAndInvalidate()
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user