ActionCable rails 7 无法拦截消息

ActionCable rails 7 unable to intercept message

提问人:koil 提问时间:9/12/2023 最后编辑:koil 更新时间:9/12/2023 访问量:31

问:

这是我的视频控制器 #index

    ActionCable.server.broadcast("To_User", { body: "This Room is Best Room." })

这是从中流式传输消息的位置。

class ApiUpdateChannel < ApplicationCable::Channel
  def subscribed
    stream_from "To_User"
  end

  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end
end

这是我update_api_channel.js

consumer.subscriptions.create({channel: "ApiUpdateChannel", room: "To_User"}, {
  connected() {
    console.log('blabla')
  },

  disconnected() {
    // Called when the subscription has been terminated by the server
  },

  received(data) {
    console.log('klakla');
  }
});

我能够在控制台中看到“blabla”。但是没有“klakla”。我现在被困了一天了。

Ruby-on-Rails WebSocket 操作电缆 Ruby-on-Rails-7

评论

0赞 Alex 9/12/2023
你必须先这样做.如果要导航到索引页,然后广播,然后呈现页面,然后连接,则接收为时已晚。您可能需要打开两个选项卡并打开其中一个选项卡,以查看是否收到任何内容。connectbroadcast
0赞 mechnicov 9/12/2023
您是否尝试过重建 JS 资产?像 和 .可能是您的代码已添加但未在编译文件中使用rails assets:clobberyarn buildreceived
0赞 koil 9/12/2023
@Alex成功了。问题是我需要更新current_tab。例如,当用户单击Make_Request时,我可以向用户广播有关 api 调用状态的消息。这是可以实现的吗?
0赞 koil 9/12/2023
另外,想问是否可以从 sidekiq 处理 Actioncable.server.broadcast。我的正在从控制器工作,而不是从 sidekiq 工作
0赞 Alex 9/12/2023
当然,一旦页面加载,您就连接了。您只是在点击后无法刷新页面,这甚至不应该是 Turbo 的问题。如果没有一些细节,很难说您当前的选项卡上出了什么问题。Sidekiq - 在单独的进程/服务器中运行,您需要切换到 Redis 适配器(在 cable.yml 中),以便 ActionCable 可以从任何地方进行通信。

答: 暂无答案