Почему в консоли Xcode возникает ошибка "рукопожатия"?

2015-08-01 22:30:43.893 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.896 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.899 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.912 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.913 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.913 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.914 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.914 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.915 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.
2015-08-01 22:30:43.915 MyApp[2425:284133] ERROR: handshake failed ... The request timed out.

Я получаю это в случайные моменты. Как я могу проверить, какая инфраструктура/библиотека вызывает это? Он просто печатает в консоли Xcode.

Ответ 1

Посмотрите, что это Question, похоже, очень похоже, вы используете библиотеку, использующую сервер websocket. Возможно, это очень быстро решит вашу проблему. Если нет, отправьте список библиотек, которые вы используете, и сформируйте код, в котором вы настроили сокет.

Ответ 2

В некоторых библиотеках вашего проекта может использоваться идентификация сокетов или SSL.

В моем случае я увидел такое же сообщение об ошибке handshake failed, когда я попытался отправить push-уведомление на сервер APNS с неправильными сертификатами.

Невозможно найти, какую библиотеку или каркас распечатать на консоли. Попробуйте удалить сторонние библиотеки, включенные в проект, до тех пор, пока сообщение об ошибке не появится.

Ответ 3

Я думаю, что вы используете сервер websocket для своего проекта. Вы должны запустить сервер socket.io. Вот почему xcode показывает эту ошибку.

См. эту аналогичную запись в stackoverflow My Socket.io на IOS не удается установить связь с сервером websocket

Несколько раз, когда вы используете push-уведомление api, иногда происходит ошибка с подтверждением рукопожатия, поэтому прочтите эту документацию на яблоко для устранения проблем, если функция push-уведомления регистрирует эту ошибку Устранение неполадок с уведомлением приложения

Ответ 4

То, как я могу представить, может быть не лучшим решением для вас. И мой ответ работает на основе этих двух условий.

1.Вы должны комментировать почти все "println" в своем коде

2. вызов экземпляра "println" для отправки сообщения об ошибке

Затем вы можете установить "Символическую точку останова" в "Меню отладки → Точки останова → Создать символическую точку останова" и установить условие "println"

(Если модуль устарел, вам может потребоваться перерыв в "NSLog" или что-то в этом роде)

введите описание изображения здесь

введите описание изображения здесь

ссылка на то, как установить символическую точку останова: http://rshankar.com/debugging-swift-app-in-xcode/

Ответ 5

Тайм-ауты возникают, если api не отвечает в течение длительного времени, которое обычно устанавливается на 15, 30 или 60 секунд.

Ваши метки времени также разделены на секунду, что ясно говорит о том, что вы используете соединение сокета и, возможно, библиотеку для того же самого, что и является проблемой здесь. Проверьте библиотеку, которую вы используете. Это будет проблема с сервером.