Pusher във фонова работа изпреварва моето приложение - липсват JS известия

Премествам импортиранията на excel файлове (често големи, често малки) във фонов режим с помощта на Sidekiq и предупреждавам потребителя, когато импортирането завърши с помощта на Pusher.

Първо, в „синхронния“ поток (приложението Rails тук), той ще започне импортирането на Excel и след това ще пренасочи към страница на таблото за управление, която ще получава известия от Pusher, когато импортирането приключи.

Проблемът е, че потокът Sidekiq-Pusher понякога върви по-бързо от пренасочването към страницата на таблото. Моят абонат на JavaScript няма да бъде инициализиран навреме, за да получи съобщението, което се публикува от фоновия процес. Така клиентът не получава нищо.

Pusher предлага ли начин за забавяне на публикуването на съобщение, докато има абонат? Или Pusher предлага начин за „натрупване“ на съобщения, докато абонатът оживее, за да ги консумира? Или може би тук има по-просто решение, за което не съм се сетил?

Fyi, не искам фоновото задание да заспива за няколко секунди, за да се уверя, че клиентът е готов, и не искам да използвам Pusher, за да задействам опресняване (т.е. да запазя нещо в DB, ​​след това да опресня, за да го покажа ).

Ще се радвам да предоставя примерни кодове, ако желаете.

РЕДАКТИРАНЕ:

Със сигурност съм готов да използвам нещо друго освен Pusher, ако нещо друго може да реши проблема ми.


person rfish26535    schedule 23.04.2014    source източник
comment
Хей, без да сте влезли в акаунта Pusher, как бихте могли да получите съобщението до страната на клиента. Искам да кажа, че ако не съм влязъл в акаунта на тласкача с моя имейл адрес и парола, не получавам съобщението, тъй като връзката не е активна. Как можем да направим това?   -  person Rajesh Omanakuttan    schedule 09.05.2014
comment
Можете да използвате webhooks, за да проверите дали каналът е освободен. Ако е, просто изчакайте, докато някой се абонира :)   -  person vasilakisfil    schedule 04.06.2014


Отговори (1)


Извикайте работника след 1 или 2 секунди от текущия час, така че да бъде извикан и да покаже съобщението, след като бъде пренасочен към целевата страница.

TestProcess.perform_at(2.seconds.from_now,parameters)

Ще работи според очакванията. Надявам се да помогне :)

person Rajesh Omanakuttan    schedule 23.04.2014
comment
В идеалния случай не искам да разчитам на забавяния от страна на сървъра (независимо дали във фоновата работа или за самата работа), защото искам да отчета възможността потребителите да имат проблеми с браузъра/връзката, където може да отнеме известно време за Rails пренасочване към преминаване. Благодаря ви, че повдигнахте тази точка. - person rfish26535; 23.04.2014