URLSessionWebSocketTask.receive() не вызывает отмену()
Я неоднократно звоню
URLSessionWebSocketTask.receive
. Я пробовал рекурсивно вызывать версию с обработчиком завершения , а также зацикливаться на новой асинхронной версии .
В какой-то момент я больше не получаю сообщений и хочу отменить веб-сокет. Поэтому я звоню
URLSessionWebSocketTask.cancel()
. В логе вижу сообщение
[websocket] Read completed with an error Operation canceled
. Но обработчик завершения никогда не вызывается/метод асинхронного получения никогда не возвращается. Это означает, что
Task
Я начал делать прием никогда не закрывается.
Почему обработчик завершения не вызывается при отмене веб-сокета?
1 ответ
Вы действительно видите утечку с подходом, основанным на замыкании?
Я вижу утечку при использовании асинхронной версии, но если я использую закрытую версию,
Если я использую делегата в сеансе, я получу обратный вызов, когда веб-сокет будет закрыт, но я должен позвонить
Мне также нужно было добавить