我已将 Phoenix 应用程序推送到 Heroku,除了从 iOS 连接到 channel 外,它运行良好。
浏览器上的 channel 按预期工作。
在 iOS 中,我使用的是 PhoenixWebSocket ,并且在开发环境中,连接到本地 Phoenix 应用程序按预期工作。
我遇到的问题是当我将 web socket url 指向 Heroku 应用程序时,我收到以下错误:
Error Domain=WebSocket Code=301 "Invalid HTTP upgrade" UserInfo={NSLocalizedDescription=Invalid HTTP upgrade}
今天早些时候在四处寻找错误消息,我发现Chris McCord的一个帖子,我认为是,说这个错误消息是服务器拒绝升级请求的结果。
但是,我环顾 Heroku 并发现了这一点; Websockets functionality is supported for all applications .
所以我很困惑我的问题是在 iOS 端还是 Heroku 端。
我已经推送了 Chris 的示例 chat application到 Heroku,并尝试连接 PhoenixWebSocket 附带的演示应用程序,但得到相同的错误。
有没有其他人设法让 Web 套接字请求在 iOS 和托管 Phoenix 应用程序的 Heroku 之间工作?
在尝试加入 channel 之前,是否有人知道我需要对 iOS 中的请求做些什么不同的事情?或者,也许 Heroku 设置与我错过的 Web 套接字有关?
iOS中请求的url:
let url = NSURL(string: "ws://app-name-32793.heroku.com/socket/websocket")!
非常感谢任何可以提供帮助的人,如果还有什么我可以提供的帮助,请告诉我。
保罗
Best Answer-推荐答案 strong>
我知道这是旧的,但一个可能的问题是您可能需要通过 https/wss 连接。所以要么
让 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: [])
关于ios - 无法使用 PhoenixWebSocket 从 iOS 连接到托管在 Heroku 上的 Phoenix channel ,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/37778242/
|