关于ruby on rails:ActionCable无法调用定期计时器

ActionCable unable to call on periodic timers

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

现在在我的app/channels/requests_channel.rb中,我尝试通过以下操作对此进行测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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中的代码相当简单,这应该可以工作,但是我无法使其正常工作。有人对此有任何经验吗?


在Rails 5.2.0中,两者

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

然后,

1
2
3
4
5
periodically :transmit_device_status, every: 5.seconds

def transmit_device_status
  transmit payload: 'some_payload'
end

在第一次尝试时为我工作。我不能告诉您为什么它最初对您不起作用,对不起,但是它可能对其他人有帮助,因为这是我发现的关于该主题的极少数帖子之一。