ActionCable 不尊重 production.rb 中的端口分配
Posted
技术标签:
【中文标题】ActionCable 不尊重 production.rb 中的端口分配【英文标题】:ActionCable not respecting port assigning in production.rb 【发布时间】:2018-03-02 20:16:56 【问题描述】:我正在尝试在备用端口 (8080) 上运行我的 ActionCable 服务器。我将我的production.rb
设置如下:
config.action_cable.url = 'wss://my-domain.org:8080/cable'
config.web_socket_server_url = "wss://my-domain.org:8080/cable"
页面中包含的元标记准确地反映了更改的端口:
<meta name="action-cable-url" content="wss://my-domain.org:8080/cable" />
但是,当我检查请求时,我发现指定的端口未包含在 URL 中,因此我们永远无法连接到 websocket:
WebSocket connection to 'wss://my-domain.org/cable' failed: WebSocket is closed before the connection is established.
我已经测试并验证了我的服务器正在积极地在端口 8080 上侦听 websocket 请求,并且工作正常。如果我在javascript中手动设置App.cable.url = 'wss://my-domain.org:8080/cable'
,一切正常。
问题似乎是 ActionCable 没有从元标记中读取端口规范。我该如何解决这个问题?
Rails 5.1.3
【问题讨论】:
【参考方案1】:为时已晚,但我认为问题出在您的 cable.js 上
(function()
this.App || (this.App = );
App.cable = ActionCable.createConsumer();
).call(this);
ActionCable.createConsumer();
不应该有url参数
<%= action_cable_meta_tag %>
必须在加载 JS 之前在您的模板中定义。
【讨论】:
以上是关于ActionCable 不尊重 production.rb 中的端口分配的主要内容,如果未能解决你的问题,请参考以下文章