我在Docker环境中使用Rails 5,我可以使用worker.new.perform让Action Cable在Sidekiq worker上完全正常播放.
但是对于我的生活,我在使用worker.perform_async时无法进行广播.
这是我的cable.yml:
default: &default adapter: redis url: <%= ENV['REDIS_PROVIDER'] %> development: <<: *default test: <<: *default production: <<: *default
这是我的工人:
class AdminWorker include Sidekiq::Worker def perform ActionCable.server.broadcast 'admin_channel',content: 'hello' end end
我的管理频道:
class AdminChannel < ApplicationCable::Channel def subscribed stream_from "admin_channel" end def unsubscribed # Any cleanup needed when channel is unsubscribed end end
正如我之前提到的,调用AdminWorker.new.perform时,这很好用.一旦我尝试运行AdminWorker.perform_async,电缆就不会广播,对日志中的动作电缆没有任何帮助.我在这里错过了什么?
解决方法
我有同样的问题.遇到了这个答案:
ActionCable.server.broadcast from the console – 为我工作.基本上只是改变了cable.yml
development: adapter: async
至
development: adapter: redis url: redis://localhost:6379/1
我能够从控制台,模型,Sidekiq工人班等广播.