Phoenix アプリを Heroku にプッシュしましたが、iOS からチャネルに接続する以外は正常に動作しています。
ブラウザ上のチャネルは期待どおりに機能します。
iOS ではPhoenixWebSocketを使用しています。開発環境では、ローカルの Phoenix アプリへの接続は期待どおりに機能します。
私が得ている問題は、Web ソケットの URL を Heroku アプリにポイントすると、次のエラーが発生することです。
Error Domain=WebSocket Code=301 "Invalid HTTP upgrade" UserInfo={NSLocalizedDescription=Invalid HTTP upgrade}
今日の初めにエラー メッセージを探し回ったところ、Chris McCord からの投稿を見つけました。このエラー メッセージは、サーバーがリクエストのアップグレードを拒否した結果であると書かれていました。
ただし、Heroku を調べてみると、次のことがわかりました。Websockets 機能は、すべてのアプリケーションでサポートされています。
そのため、問題が iOS 側にあるのか、Heroku 側にあるのか混乱しています。
Chris のサンプルチャット アプリケーションを Heroku にプッシュし、PhoenixWebSocket に付属のデモ アプリに接続しようとしましたが、同じエラーが発生します。
Phoenix アプリをホストしている iOS と Heroku の間で動作する Web ソケット要求を取得できた人はいますか?
チャンネルに参加しようとする前に、iOS でリクエストを処理する必要がある別の方法があるかどうかは誰にもわかりませんか? または、Web ソケットに関連する Heroku のセットアップで見逃したものがあるのでしょうか?
iOS でのリクエストの URL:
let url = NSURL(string: "ws://app-name-32793.heroku.com/socket/websocket")!
助けていただける方に感謝します。他に何かお手伝いできることがあればお知らせください。
ポール