`try await URLSessionWebSocketTask.send()` не возвращает и не выдает
Я хочу отправить несколько сообщений в веб-сокет следующим образом:
let session = URLSession(configuration: .default)
var socket = session.webSocketTask(with: URLRequest(url: self.url, timeoutInterval: 30)
socket.resume()
do {
for message in messages {
try await socket.send(message)
}
} catch {
print(error)
}
Иногда отправляются все сообщения, но в большинстве случаев 10-е сообщение просто не завершается и не завершается с ошибкой. Я даже добавил методы делегата, чтобы определить, закрыт ли сокет или произошел сбой, но эти методы делегата никогда не вызываются. Отправка просто не возвращает и не выбрасывает. Я думал, что добавление timeoutInterval приведет к сбою отправки, если она не увенчается успехом через 30 секунд, но, похоже, это не так.
Есть ли у кого-нибудь идеи, что здесь может происходить и как я могу это решить? Любая помощь очень ценится, заранее спасибо.
PS: сообщение, с которым не удалось справиться, в основном имеет размер всего около 79 байт, поэтому его отправка не должна занимать много времени, тем более что отправка гораздо более длинных сообщений работает нормально. Я пытался использовать синхронную версиюsend
сcompletionHandler
поскольку я надеялся, что, возможно, в асинхронной версии есть ошибки, но у меня та же проблема с ее использованием: обработчик завершения не вызывается
РЕДАКТИРОВАТЬ: я нашел следующее сообщение в консоли:Connection 1: received failure notification
. Есть ли способ обнаружить это? Ни один метод делегата не вызывается, ни вURLSessionTaskDelegate
ни вURLSessionDelegate