Я перемещаю импорт файлов Excel (часто больших, часто маленьких) в фон с помощью Sidekiq и предупреждаю пользователя, когда импорт завершен, с помощью Pusher.
Сначала в «синхронном» потоке (здесь приложение Rails) он запускает импорт в Excel, а затем перенаправляет на страницу панели мониторинга, которая будет получать уведомления от Pusher, когда импорт будет завершен.
Проблема в том, что поток Sidekiq-Pusher иногда идет быстрее, чем перенаправление на страницу панели инструментов. Мой подписчик JavaScript не будет инициализирован вовремя для получения сообщения, которое публикуется из фонового процесса. Таким образом, клиент ничего не получает.
Предлагает ли Pusher способ отложить публикацию сообщения до тех пор, пока не появится подписчик? Или Pusher предлагает способ «накапливать» сообщения до тех пор, пока подписчик не оживет, чтобы их использовать? Или, может быть, здесь есть более простое решение, о котором я не думал?
Fyi, я не хочу, чтобы фоновое задание спало на несколько секунд, чтобы убедиться, что клиент готов, и я не хочу использовать Pusher для запуска обновления (т.е. сохранить что-то в БД, а затем обновить, чтобы отобразить его ).
При желании я с радостью предоставлю образцы кода.
РЕДАКТИРОВАТЬ:
Я, конечно, готов использовать что-то еще, помимо Pusher, если что-то еще может решить мою проблему.