swift-eventsource
swift-eventsource copied to clipboard
一直重连,怎么中断?
`// Tells the delegate that the task finished transferring data. public func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { utf8LineParser.closeAndReset() let currentRetry = eventParser.reset()
guard readyState != .shutdown
else { return }
if let error = error {
if (error as NSError).code != NSURLErrorCancelled {
logger.log(.info, "Connection error: %@", error.localizedDescription)
if dispatchError(error: error) == .shutdown {
logger.log(.info, "Connection has been explicitly shut down by error handler")
if readyState == .open {
config.handler.onClosed()
}
readyState = .shutdown
return
}
}
} else {
logger.log(.info, "Connection unexpectedly closed.")
}
if readyState == .open {
config.handler.onClosed()
}
readyState = .closed
let sleep = reconnectionTimer.reconnectDelay(baseDelay: currentRetry)
// this formatting shenanigans is to workaround String not implementing CVarArg on Swift<5.4 on Linux
logger.log(.info, "Waiting %@ seconds before reconnecting...", String(format: "%.3f", sleep))
delegateQueue.asyncAfter(deadline: .now() + sleep) { [weak self] in
self?.connect()
}
}`
这个方法在 readyState = .closed 之后,为什么有 sleep 后重新连接的逻辑,如何设置可以终止呢?