Rails 7 的 App.cable 等价物是什么?

What is the equivalent of App.cable for Rails 7?

提问人:Lou Zell 提问时间:8/24/2023 更新时间:8/24/2023 访问量:17

问:

我正在关注 DHH 的 Action Cable Rails 5 1 演示。

使用浏览器的开发人员控制台,他使用 .在 Rails 7 中尝试同样的事情 throwApp.cable

Uncaught ReferenceError: App is not defined

我已经在rails动作电缆生成器生成的代码中进行了搜索,实际上没有这个名字。但是,Rails 5 和 Rails 7 之间的配置完全不同,我正在努力寻找任何方法来获取对客户端电缆的引用。

我也试过了,它回来了.我可以看到电缆已连接(下图)。我可以在控制台中使用什么来与它交互?Turbo.cableundefined

image of actioncable connected

谢谢

developer-tools actioncable ruby-on-rails-7

评论


答:

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", {

在开发人员工具控制台中可用。我现在可以在客户端上键入并在服务器端查看收到的消息。roomChannelroomChannel.speak()

显然,这改变了全局状态,但我认为对于调试能力来说是值得的。window