`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

0 ответов

Другие вопросы по тегам