2

我已经将 Phoenix 应用程序推送到 Heroku 并且运行良好,除了从 iOS 连接到频道。

浏览器上的频道按预期工作。

在 iOS 中,我使用的是PhoenixWebSocket,在开发环境中,连接到本地 Phoenix 应用程序按预期工作。

我遇到的问题是,当我将 web socket url 指向 Heroku 应用程序时,我收到以下错误:

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

今天早些时候四处寻找错误消息,我发现了 Chris McCord 的一个帖子,我认为是,说这个错误消息是服务器拒绝升级请求的结果。

但是,我环顾 Heroku 并发现了这一点;所有应用程序都支持 Websockets 功能

所以我很困惑我的问题是在 iOS 端还是 Heroku 端。

我已将 Chris 的示例聊天应用程序推送到 Heroku,并尝试连接 PhoenixWebSocket 附带的演示应用程序,但得到相同的错误。

有没有其他人设法让 Web 套接字请求在 iOS 和托管 Phoenix 应用程序的 Heroku 之间工作?

有人知道在尝试加入频道之前我是否需要对 iOS 中的请求做一些不同的事情吗?或者,也许 Heroku 设置与我错过的 Web 套接字有关?

iOS中请求的url:

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

非常感谢任何可以提供帮助的人,如果还有什么我可以提供的帮助,请告诉我。

保罗

4

1 回答 1

0

我知道这很旧,但一个可能的问题是您可能需要通过 https/wss 进行连接。所以要么

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

或者:

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

于 2016-12-01T22:00:09.483 回答