URLSessionWebSocketTask: Неустранимая ошибка: только одно из сообщений или ошибок должно быть нулевым
Я случайно получаю эту ошибку, так как недавно использовал URLSessionWebSocketTask
, что приводит к сбою моей программы каждый раз:
Fatal error: Only one of message or error should be nil
Но я не могу найти конкретный способ воспроизвести это, потому что понятия не имею. Похоже, это не связано с качеством сети или написанным мной небезопасным кодом.
Я хотел бы спросить, не сталкивались ли вы с этой ошибкой недавно? Мне нужно знать, вызвано ли это SDK.
- Xcode 11.3.1 (11C504)
- macOS 10.15.3 (19D76)
- iOS 13.3.1 (17D50)
ps Я искал в Интернете и нашел только эту связанную ветку, и это не помогло.
0 ответов
Покопавшись, я нашел возможное решение, которое можно найти в этом репо под названием websocket-apple на GitHub: ссылка
Я также столкнулся с этой аварией, когда у меня был
URLSession
с
delegateQueue
установлен в
.main
. В решении, реализованном репозиторием websocket-apple, оболочка вокруг задачи URLSessionWebSocket создает новый
OperationQueue
и передает его как
delegateQueue
при инициализации
URLSession
.
В этом блоке кода
delegateQueue
перейти в
URLSession
создается (копируется непосредственно из связанного репо)
private let webSocketQueue: DispatchQueue = DispatchQueue(label: "WebSocket.webSocketQueue")
private lazy var delegateQueue: OperationQueue = {
let queue = OperationQueue()
queue.name = "WebSocket.delegateQueue"
queue.maxConcurrentOperationCount = 1
queue.underlyingQueue = webSocketQueue
return queue
}()
И строка 77 имеет инициализацию
URLSession
:
let session = URLSession(configuration: .default, delegate: delegate, delegateQueue: delegateQueue)