ActionCable不遵守production.rb中的端口分配

时间:2018-03-02 20:16:57

标签: ruby-on-rails websocket ruby-on-rails-5 actioncable

我试图在备用端口(8080)上运行我的ActionCable服务器。我按如下方式设置<meta name="action-cable-url" content="wss://my-domain.org:8080/cable" />

WebSocket connection to 'wss://my-domain.org/cable' failed: WebSocket is closed before the connection is established.

页面上包含的元标准准确反映了已更改的端口:

App.cable.url = 'wss://my-domain.org:8080/cable'

但是,当我检查请求时,我看到指定的端口未包含在URL中,因此我们永远无法连接到websocket:

{{1}}

我已经测试并验证我的服务器正在主动侦听端口8080上的websocket请求,并且它正常工作。如果我在javascript中手动设置{{1}},一切正常。

问题似乎是ActionCable没有从metatag读取端口规范。我该如何解决这个问题?

Rails 5.1.3

1 个答案:

答案 0 :(得分:0)

太晚了,但我认为问题出在你的cable.js

(function() {
  this.App || (this.App = {});
  App.cable = ActionCable.createConsumer();
}).call(this);
  • ActionCable.createConsumer();不应该有url参数
  • <%= action_cable_meta_tag %>必须在JS加载之前在模板中定义。