ios - 无法使用 PhoenixWebSocket 从 iOS 连接到托管在 Heroku 上的 Phoenix channel

标签 ios swift sockets heroku phoenix-channels

我已经将一个 Phoenix 应用程序推送到 Heroku,它运行良好,除了从 iOS 连接到一个 channel 。

浏览器上的 channel 按预期工作。

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

我遇到的问题是,当我将网络套接字 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 端。

我已经推送了克里斯的例子chat application到 Heroku,并尝试连接 PhoenixWebSocket 附带的演示应用程序,但得到相同的错误。

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

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

iOS 中请求的 url:

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

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

保罗

最佳答案

我知道这是旧的,但一个可能的问题是您可能需要通过 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: [])

关于ios - 无法使用 PhoenixWebSocket 从 iOS 连接到托管在 Heroku 上的 Phoenix channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37778242/

相关文章:

java - 无法在 Linux Java 上识别 CRLF

c - 在C语言中解析原始套接字编程中的IP地址

ios - 当 Timer 为每个 UITableViewCell 运行时,它们没有被正确回收

ios - 非美国国家/地区的 PK 联系方式和邮政编码

ios - 滑动 UIView 时的动画错误

ios - 如何定义特定类型字典的扩展?

ios - Swift 中的便捷初始化器

ios - Swift - 获取国家列表 -> fatal error : Can't unwrap Optional. 无

ios - 在 3d 空间中沿 x 轴旋转平面时,如何计算底边的高度?

php - socket.io中的这段代码是什么意思