【问题标题】:ActionCable.server.broadcast from console always returns 0来自控制台的 ActionCable.server.broadcast 始终返回 0
【发布时间】:2020-02-23 05:42:45
【问题描述】:

我正在尝试让 actioncable 正常工作,但是当我在 rails 控制台中发送 ActionCable.server.broadcast "discussion", {asdf: true} 时,它总是返回 0。

我在 cable.yml 中运行和配置了 redis 服务器。

任何关于我做错了什么的建议都会受到重视。

导轨

DiscussionChannel is transmitting the subscription confirmation
DiscussionChannel is streaming from discussion_channel

Rails 控制台

Running via Spring preloader in process 17262
Loading development environment (Rails 5.2.2)
2.6.0 :001 > ActionCable.server.broadcast "discussion", {asdf: true}
[ActionCable] Broadcasting to discussion: {:asdf=>true}
 => 0 

discussion_channel.rb

class DiscussionChannel < ApplicationCable::Channel
  def subscribed
     stream_from "discussion_channel"
  end

  def unsubscribed
  end

end

讨论.咖啡

App.discussion = App.cable.subscriptions.create "DiscussionChannel",
  connected: ->

  disconnected: ->

  received: (data) ->
     console.log(data)

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

此问题可能与thisthis 重复。

基本上,ActionCable 在开发模式下的默认行为是使用async 适配器,该适配器仅在同一进程中运行。 由于您的 rails 控制台和 rails 服务器在不同的进程中运行,默认情况下在控制台中调用 ActionCable::Server#broadcast 将不起作用。对于进程间广播,您需要更改 config/cable.yml 中的配置以在开发中使用 Redis。

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2012-08-15
    • 2014-04-30
    • 2013-07-25
    相关资源
    最近更新 更多