Мой URLSessionWebSocketDelegate
настроен и реализован
urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didCloseWith closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?)
Однако, кажется, что он попадает в делегат, только если сервер правильно отключился. Если соединение прерывается или сервер не предоставляет код отключения, функция делегата никогда не запускается. Я также попытался проверить свойства URLSessionWebSocketTask
closeCode
и closeReason
до и после отключения, и они не изменятся, пока сервер не отправит правильный код отключения.
Пока я контролирую сервер и может быть уверен, что преднамеренные разъединения имеют код, что произойдет, если сетевое соединение прекратится? Или если сервер выйдет из строя? Я бы предположил, что функция-делегат должна по-прежнему вызываться.
Интересно то, что моя функция прослушивания выдает ошибку, и ошибка гласит следующее:
Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=[urlomitted], NSErrorFailingURLKey=[urlomitted]
Итак хотя я мог бы вручную отсоединить сокет, если я вижу ошибку 57, я не знаю, является ли это исчерпывающим для всех различных вариантов разъединения.
Я думаю, что я либо делаю что-то не так, либо это ошибка, но Я не могу найти кого-то еще с такой же проблемой, поэтому я подумал, что я бы спросил, прежде чем отправлять радар.