Не удается подключиться к каналу Phoenix, размещенному на Heroku, из iOS с помощью PhoenixWebSocket

Я отправил приложение Phoenix на Heroku, и оно работает нормально, за исключением подключения к каналу из iOS.

Каналы через браузер работают как положено.

В iOS я использую PhoenixWebSocket, а в dev env подключение к локальному приложению Phoenix работает должным образом.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я указываю URL-адрес веб-сокета на приложение Heroku, я получаю следующую ошибку:

Error Domain=WebSocket Code=301 "Invalid HTTP upgrade" UserInfo={NSLocalizedDescription=Invalid HTTP upgrade}

Просматривая сообщение об ошибке ранее сегодня, я нашел сообщение от Криса МакКорда, я думаю, что это было, в котором говорилось, что это сообщение об ошибке является результатом отказа сервера обновить запрос.

Однако я осмотрел Heroku и нашел это; Функции веб-сокетов поддерживаются для всех приложений.

Поэтому я не понимаю, связана ли моя проблема со стороной iOS или со стороны Heroku.

Я отправил пример Криса приложение чата в Heroku и попытался подключиться к демонстрационному приложению, которое поставляется с PhoenixWebSocket, но получить ту же ошибку.

Кому-нибудь еще удалось заставить запросы веб-сокетов работать между iOS и Heroku, на котором размещено приложение Phoenix?

Кто-нибудь знает, есть ли что-то другое, что мне нужно сделать с запросом в iOS, прежде чем пытаться присоединиться к каналу? Или, может быть, в настройке Heroku есть что-то, связанное с веб-сокетами, что я пропустил?

URL для запроса в iOS:

let url = NSURL(string: "ws://app-name-32793.heroku.com/socket/websocket")!

Большое спасибо всем, кто может помочь, и, пожалуйста, дайте мне знать, если есть что-то еще, что я могу предоставить, чтобы помочь.

Павел


person paul h    schedule 12.06.2016    source источник
comment
Павел, вам удалось решить эту проблему? Я сталкиваюсь с той же проблемой - также использую клиент iOS с серверной частью Phoenix, размещенной на Heroku.   -  person fastredshoes    schedule 28.06.2016
comment
К сожалению нет. В настоящее время я настраиваю свой собственный сервер Centos 7. Если я найду что-нибудь, чтобы исправить проблему с героку, я отпишусь.   -  person paul h    schedule 29.06.2016
comment
@fastredshoes Я не возвращался и не пытался исправить проблему с Heroku, потому что я исправил ту же проблему на своем собственном сервере. Я сделал это с помощью, которую нашел в этом сообщении: =1#comment63907382_38230388">ссылка. ХТХ Вы.   -  person paul h    schedule 11.07.2016
comment
это было! Спасибо.   -  person fastredshoes    schedule 12.07.2016


Ответы (1)


Я знаю, что это устарело, но одна из возможных проблем заключается в том, что вам может потребоваться подключение через https/wss. Так что либо

let url = NSURL(string: "wss://app-name-32793.heroku.com/socket/websocket")!

or:

let socket = Socket(domainAndPort: "app-name-32793.heroku.com", path: "socket", transport: "websocket", prot: "https", params: [])

person Jason Axelson    schedule 01.12.2016