- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经将一个 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/
我正在尝试从模板中的列表( )中提取值,但出现此错误: lists in Phoenix.HTML and templates may only contain integers represent
我正在阅读 Programming Phoenix 这本书,一切都很好,直到第 44 页要求我重新启动 Phoenix 服务器。 我用双 Ctrl + C 杀死了当前服务器,但是当我尝试再次运行 mi
我的应用程序和 api json 请求以及常规 html 都可以工作。我的路由器.ex defmodule MyApp.Router do use MyApp.Web, :router pip
我想在模板中将对象呈现为 JSON。我试过: 但是我得到一个错误 protocol Phoenix.HTML.Safe not implemented for %Ecto.Changeset{...
在 phoenix 框架的 View 中,在 div 元素内生成两个 span 元素的方法是什么? 最佳答案 为了做到这一点,可以只使用一个数组并将其作为 div 标签的值传递给内部,如下所示: de
我从 Rails 迁移,并希望这能在我的模板中工作? hello world 似乎没有一个条件得到呈现。如何实现这一目标? 谢
完成示例指南。本章中详细介绍的内容在我的应用程序中不起作用。看起来很简单的事情。我有一个视频模型: defmodule Rumbl.Video do use Rumbl.Web, :model
完成示例指南。本章中详细介绍的内容在我的应用程序中不起作用。看起来很简单的事情。我有一个视频模型: defmodule Rumbl.Video do use Rumbl.Web, :model
通过可选“inputs_for”输入的 Phoenix 嵌套表单导致 Controller 中的 map 无法通过验证。例如,一个帖子有评论。如果我想在创建帖子时为帖子添加评论,嵌套表单将如下所示:
我正在尝试在应用程序中实现不同的语言。所以我所做的是在 Session 的 db 中创建了 lang 变量,它保留了当前选择的语言。 问题是我正在通过更新操作调用和更新值: def update(co
我想在我的网站上实现一个典型的“记住我”功能,它需要一种方法来创建在遥远的 future 过期的 cookie。有没有办法在 Phoenix Framework 中创建它们? 最佳答案 只要给 coo
我正在制作一个多站点应用程序。我想在测试 Controller 之前在连接上设置请求主机。在 Rails 中,我们可以使用 before :each do request.env["HTTP_RE
我知道我可以通过包含以下内容来更新实时取景: if connected?(socket), do: :timer.send_interval(10000, self(), :click) 但是,有没有
Ruby on Rails 带有终端命令 rake routes . Phoenix 有类似的吗? 最佳答案 命令是 $ mix phoenix.routes 关于phoenix-framework
我正在尝试使用 addict包以在我的项目中进行身份验证,但是每当我尝试执行操作(注册、登录...)时,我的 POST 都会出现 CrossDomain 错误。 我已经尝试添加 cors_plug包来
我在 Phoenix 项目,和mix ecto.create , mix ecto.migrate , 和 mix ecto.drop都发出相同的错误: $ mix ecto.drop ==> tzd
在我的帖子模型上,我实现了一个简单的验证 def changeset(model, params \\ :empty) do model |> cast(params, @requ
这主要是为了测试目的,但是我怎样才能在 Heroku 上实现与 mix ecto.reset 相同的效果。这样的命令导致 FATAL: permission denied for database "
我们的 Web 应用程序目前在 C# 中运行在 Windows 和 IIS 上。我们严重依赖此环境中包含的 Windows 身份验证方案。启用 Windows 身份验证后,我们可以检测连接用户的身份,
在我的 Phoenix 应用程序中,我想对单个记录运行 get_by() Ecto 查询 - 但是,我要搜索的字段之一应该评估为 nil ,但 Phoenix/Ecto 禁止使用 nil 作为比较运算
我是一名优秀的程序员,十分优秀!