3

这在 Rails 中没有记录,但 ActionCable 有一个名为PeriodicTimers https://github.com/rails/rails/blob/master/actioncable/lib/action_cable/channel/periodic_timers.rb的模块

现在,我app/channels/requests_channel.rb尝试通过以下方式进行测试:

class RequestsChannel < ApplicationCable::Channel
  periodically :transmit_status, every: 2.seconds

  def subscribed
      stream_from "requests_#{current_user.id}"
  end

  def unsubscribed
  end

  private

  def transmit_status
    puts "ping"
  end
end

当我连接并订阅流时,控制台中没有显示任何内容。我觉得 ActionCable 中的代码相当简单,这应该可以工作,但我无法让它工作。有人有这方面的经验吗?

4

1 回答 1

1

在 Rails 5.2.0 中,两者

  periodically every: 5.seconds do
    transmit payload: 'some_payload'
  end

和,

periodically :transmit_device_status, every: 5.seconds

def transmit_device_status
  transmit payload: 'some_payload'
end

第一次尝试为我工作。我不能告诉你为什么它最初对你不起作用很抱歉,但它可能对其他人有帮助,因为这是我在这个主题上找到的极少数帖子之一。

于 2019-03-27T19:40:48.333 回答