【发布时间】:2016-04-17 20:15:34
【问题描述】:
我正在尝试创建一个公开 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
然后我将 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(){
// ...
}
});
但是我收到了这个错误
Subscription class not found ({"command"=>"subscribe", "identifier"=>"{\"channel\":\"MyChannel\"}"})
我错过了什么?
【问题讨论】:
-
您使用的是哪个版本的 Action Cabel? Rails Beta1?
-
@JohnKacz 是的,没错
-
您的 MyChannel 类中似乎没有定义订阅方法。来自文档 (link):“只需调用
App.cable.subscriptions.create即可设置订阅,这将调用AppearanceChannel#subscribed” -
@JohnKacz 不,没必要
-
好的,抱歉。我还没有对 Action Cable 做太多事情(它在我的清单上),但为什么没有必要呢?我看到的频道类的每个示例都有一个订阅方法。
标签: ruby-on-rails ruby ruby-on-rails-5 actioncable