【问题标题】:Pusher app client not receiving push events via Sidekiq asynchronous jobPusher 应用程序客户端未通过 Sidekiq 异步作业接收推送事件
【发布时间】:2013-10-26 02:04:55
【问题描述】:

尝试使用 Sidekiq 向客户端发送推送事件。这是我的代码:

时钟.rb

every(3.minutes, 'update_events') { PushEventWorker.perform_async('events_updated') }

push_event_worker.rb

class PushEventWorker

  include Sidekiq::Worker
  sidekiq_options :retry => false, :timeout => 2.minutes

  def perform(job_name)
    job_name = job_name.to_sym

    if :events_updated
      Pusher['events'].trigger('events_updated', {})
  end

end
应用程序.html.erb
<script src="http://js.pusher.com/2.1/pusher.min.js" type="text/javascript"></script>
<script type="text/javascript">

  Pusher.log = function(message) {
    if (window.console && window.console.log) {
      window.console.log(message);
    }
  };

  var pusher = new Pusher('<%= ENV['pusher_key'] %>');

  var eventsChannel = pusher.subscribe('events');
  eventsChannel.bind('events_updated', function() {
    App.Pollers.Event.poll();
  });

</script>

我在日志中得到以下输出:

Pusher : Event recd : {"event":"pusher:pong","data":{}}

但是,当我拨打PushEventWorker.new.perform('events_updated') 时,它是成功的。为什么这行得通,但上面的行不通?

【问题讨论】:

  • 问题是愚蠢的错误,解决方案没有增加任何知识价值

标签: ruby-on-rails sidekiq pusher


【解决方案1】:

在您的 push_event_worker.rb 中,perform 函数应如下所示:

def perform(job_name)
  job_name = job_name.to_sym

  if jobname == :events_updated
    Pusher['events'].trigger('events_updated', {})

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多