Actioncable广播无法在Rails中使用控制台

时间:2017-03-02 11:32:55

标签: ruby-on-rails actioncable

我在rails 5 app上使用了actioncable。下面的代码在控制器中工作,但不在控制台中工作。

ActionCable.server.broadcast "connector_app", content: "test message"

响应:

[ActionCable] Broadcasting to connector_app: {:content=>"test message"}
=> nil

cable.yml

development:
  adapter: redis
  url: redis://localhost:6379/1

test:
  adapter: async

production:
  adapter: redis
  url: redis://localhost:6379/1

控制器代码(工作正常):

def sample_socket_message
    ActionCable.server.broadcast "connector_app",
      content:  "test message",
    head :ok
end

解决问题: 忘记在config / initializer / redis.rb

中添加以下代码
$redis = Redis.new(:host => 'localhost', :port => 6379)

1 个答案:

答案 0 :(得分:1)

开发和测试模式下ActionCable的默认行为是使用异步适配器,该适配器仅在同一进程中运行。对于进程间广播,您需要切换到redis适配器。

由于您在开发中使用redis适配器,这就是它在控制器中工作而不在控制台中工作的原因。

cable.yml

test:
  adapter: redis
  url: redis://localhost:6379/1