我已经将Phoenix应用程序推送到Heroku,除了从iOS连接到频道外,它运行良好。
浏览器上的频道按预期工作。
在iOS中,我使用PhoenixWebSocket,在dev-env中,连接到本地Phoenix应用程序可以正常工作。
我遇到的问题是,当我将网络套接字url指向Heroku应用程序时,我会收到以下错误:
Error Domain=WebSocket Code=301 "Invalid HTTP upgrade" UserInfo={NSLocalizedDescription=Invalid HTTP upgrade}
今天早些时候,我四处查找错误消息,发现Chris McCord发了一条帖子,我想是的,说这个错误消息是服务器拒绝升级请求的结果。
然而,我环顾四周,发现了这一点;所有应用程序都支持Websockets功能。
所以我很困惑我的问题是在iOS方面,还是在Heroku方面。
我已经将Chris的示例聊天应用程序推送到了Heroku,并尝试连接PhoenixWebSocket附带的演示应用程序,但遇到了同样的错误。
是否有其他人能够在iOS和Heroku托管Phoenix应用程序之间处理网络套接字请求?
有人知道在尝试加入频道之前,我是否需要在iOS中对请求做一些不同的处理吗?或者,也许Heroku设置中有一些与网络套接字有关的东西我错过了?
iOS中请求的url:
let url = NSURL(string: "ws://app-name-32793.heroku.com/socket/websocket")!
非常感谢任何能提供帮助的人,如果还有其他我可以提供的帮助,请告诉我。
Paul
我知道这是旧的,但一个可能的问题是您可能需要通过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: [])