2017-03-02 63 views
4

我在rails 5應用上使用了actioncable。以下代碼在控制器中工作,但不在控制檯中。在Rails中無法從控制檯工作的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 

問題就迎刃而解了: 忘了添加下面的代碼在c在開發和測試模式ActionCable onfig /初始化/ redis.rb

$redis = Redis.new(:host => 'localhost', :port => 6379) 
+0

我仍然有同樣的問題,即使有合適的redis的配置,任何其他建議? – rkpasia

+0

什麼是您可以在終端中的錯誤信息? – puneet18

+0

我也解決了這個問題。我將電纜指向redis中的另一個數據庫ID,而不是應用程序的config/initializers/redis.rb中的數據庫ID – rkpasia

回答

0

的默認行爲是使用異步適配器,只在同一進程中運行。對於進程間廣播,您需要切換到redis適配器。

由於您使用的開發,這就是爲什麼它是工作在控制器和主機不工作Redis的適配器。

cable.yml

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