Lin*_*der 14 ruby ruby-on-rails ruby-on-rails-5 actioncable
我正在尝试创建一个暴露ActionCable频道的gem,但我无法让它工作.
这是我的宝石
# lib/my_channel.rb
class MyChannel < ActionCable::Channel::Base
def wait(data)
# logic ...
end
end
# lib/engine.rb
module MyApp
class Engine < ::Rails::Engine
isolate_namespace MyApp
end
end
Run Code Online (Sandbox Code Playgroud)
然后我将gem添加到我的主应用程序中Gemfile,运行bundle install,启动控制台并运行MyChannel.哪个不产生和错误,意味着通道被正确包含.
然后我将其添加到我的主应用程序中
// application.js
var socket = "ws://localhost:3000/cable";
var cable = ActionCable.createConsumer(socket);
cable.subscriptions.create({ "channel": "MyChannel" }, {
received: function(){
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误
Subscription class not found ({"command"=>"subscribe", "identifier"=>"{\"channel\":\"MyChannel\"}"})
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
这个答案不适用于 gem,仅适用于在 Rails 应用程序中创建通道。
您的my_channel.rb位置错误。我不确定测试版之间的行为是否发生了变化(我使用的是 beta3),但它应该位于app/channels/application_cable/.
我遇到了同样的问题,并意识到我的频道文件命名不当(host.rb而不是host_channel.rb)。重命名文件后,它开始工作。
我相信默认情况下仅使用特定位置和命名方案 ( app/channels/application_cable/*_channel.rb) 搜索频道文件。
| 归档时间: |
|
| 查看次数: |
2870 次 |
| 最近记录: |