swift-eventsource icon indicating copy to clipboard operation
swift-eventsource copied to clipboard

一直重连,怎么中断?

Open yayongiOSer opened this issue 7 months ago • 1 comments

`// 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 后重新连接的逻辑,如何设置可以终止呢?

yayongiOSer avatar Jul 18 '24 17:07 yayongiOSer