Клиент приложения Pusher не получает push-события через асинхронное задание Sidekiq

Попытка использовать Sidekiq для отправки push-событий клиенту. Вот мой код:

часы.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
application.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'), это успех. Почему это работает, а вышеописанное нет?


person keruilin    schedule 26.10.2013    source источник
comment
проблема была глупой ошибкой, и решение не добавляет никакой ценности знаниям   -  person keruilin    schedule 26.10.2013


Ответы (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
person number5    schedule 26.10.2013