我试图在备用端口(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
答案 0 :(得分:0)
太晚了,但我认为问题出在你的cable.js
(function() {
this.App || (this.App = {});
App.cable = ActionCable.createConsumer();
}).call(this);
ActionCable.createConsumer();
不应该有url参数<%= action_cable_meta_tag %>
必须在JS加载之前在模板中定义。