提问人:Lou Zell 提问时间:8/24/2023 更新时间:8/24/2023 访问量:17
Rails 7 的 App.cable 等价物是什么?
What is the equivalent of App.cable for Rails 7?
问:
我正在关注 DHH 的 Action Cable Rails 5 1 演示。
使用浏览器的开发人员控制台,他使用 .在 Rails 7 中尝试同样的事情 throwApp.cable
Uncaught ReferenceError: App is not defined
我已经在rails动作电缆生成器生成的代码中进行了搜索,实际上没有这个名字。但是,Rails 5 和 Rails 7 之间的配置完全不同,我正在努力寻找任何方法来获取对客户端电缆的引用。
我也试过了,它回来了.我可以看到电缆已连接(下图)。我可以在控制台中使用什么来与它交互?Turbo.cable
undefined
谢谢
答:
0赞
Lou Zell
8/24/2023
#1
我想出了一个办法。默认情况下,如果您使用 rails 生成器创建通道,例如
rails g channel room speak
你将获得一个名为 Channel 的文件,如下所示:room_channel.js
import consumer from "channels/consumer"
consumer.subscriptions.create("RoomChannel", {
connected() {
// Called when the subscription is ready for use on the server
},
disconnected() {
// Called when the subscription has been terminated by the server
},
received(data) {
// Called when there's incoming data on the websocket for this channel
},
speak: function() {
return this.perform('speak');
}
});
将第二行更改为:
window.roomChannel = consumer.subscriptions.create("RoomChannel", {
在开发人员工具控制台中可用。我现在可以在客户端上键入并在服务器端查看收到的消息。roomChannel
roomChannel.speak()
显然,这改变了全局状态,但我认为对于调试能力来说是值得的。window
评论