我使用ActionCable创建了下面的内容,但无法接收正在广播的任何数据。
评论频道:
class CommentsChannel < ApplicationCable::Channel
def subscribed
comment = Comment.find(params[:id])
stream_for comment
end
end
JavaScript:
var cable = Cable.createConsumer('ws://localhost:3000/cable');
var subscription = cable.subscriptions.create({
channel: "CommentsChannel",
id: 1
},{
received: function(data) {
console.log("Received data")
}
});
它连接良好,我可以在日志中看到以下内容:
CommentsChannel is streaming from comments:Z2lkOi8vdHJhZGUtc2hvdy9FdmVudC8x
我随后向该流进行广播:
ActionCable.server.broadcast "comments:Z2lkOi8vdHJhZGUtc2hvdy9FdmVudC8x", { test: '123' }
问题在于“received”函数从未被调用。我做错了什么吗?
注意:我正在使用“actioncable”npm包从BackboneJS应用程序连接。
config/cable.yml
中将电缆适配器从async
更改为redis
解决了这个问题。 - Artem Kalinchuk