【问题标题】:ActionCable "subscribed" method not getting calledActionCable“订阅”方法没有被调用
【发布时间】:2017-12-19 19:46:46
【问题描述】:

我有一个 ActionCable 频道,它的“订阅”方法似乎永远不会被调用。

在 Rails 日志和 Javascript 控制台中,我可以看到正在建立连接:

I, [2017-07-14T16:02:28.759843 #10658]  INFO -- : [ActionCable]  Registered connection (Z2lkOi8vd2ViY2FzdC9Vc2VyLzM0NQ)
...
I, [2017-07-14T16:14:18.594274 #12208]  INFO -- : [2cdfb51d-e500-49bd-8d7d-c941b8b2bb8a] Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)

app/assets/javascripts/channel/chats.coffee(下)中的代码似乎被调用:

 ... 
 App.global_chat = App.cable.subscriptions.create {
      channel: "ChatsChannel"
      chat_room_id: $("#chat_room_id").val()
      user_agent: navigator.userAgent
    },
 ...

因为浏览器控制台显示了聊天对象,它看起来和预期的一样:

> App.global_chat
< Subscription {consumer: Consumer, identifier: "{"channel":"ChatsChannel","chat_room_id":"32","use… like Gecko) Chrome/58.0.3029.110 Safari/537.36"}", connected: function, disconnected: function, received: function…}
...

但日志显示 ChatsChannel“订阅”方法(粘贴在下面)中没有任何内容,并且从未调用过“register_connection”方法。

# app/channels/chats_channel.rb
class ChatsChannel < ApplicationCable::Channel

  def subscribed
    logger.add_tags 'ActionCable', "subscribing"
    logger.info("subscribing")
    stream_from "chat_rooms_#{params['chat_room_id']}_channel"
    current_user.register_connection(params[:chat_room_id], params[:user_agent])
  end
  ...
end

有什么想法吗?我对 ActionCable 很陌生。我能找到的所有文档都说“订阅”方法只是在注册连接时自动调用,似乎是这样,所以我无法弄清楚这里出了什么问题。

这是可操作的 5.0.1。

有没有办法通过Javascript强制ruby“订阅”方法?

【问题讨论】:

    标签: ruby-on-rails ruby actioncable


    【解决方案1】:

    别忘了将config/cable.yml也调整为redis:

    development:
      adapter: redis
    

    并将其添加到您的Gemfile:

    gem 'redis'
    

    【讨论】:

      【解决方案2】:

      原来问题是我的redis服务器没有在后台运行。在 Rails 应用程序之外运行 redis-server 解决了这个问题!

      【讨论】:

        猜你喜欢
        • 2018-09-19
        • 2018-03-02
        • 2019-03-19
        • 1970-01-01
        • 2014-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-28
        相关资源
        最近更新 更多