синхронизировать передачу событий в приложение или прослушивать события БД

1

У меня есть следующий поток в моем приложении:

  1. установить некоторые данные на странице и отправить их [app]
  2. сохранять данные в indexeddb и событии синхронизации пожара [app]
  3. извлекать данные из indexeddb и отправлять их на сервер [service-worker]
  4. сохранить ответ в indexeddb [service-worker]
  5. получить ответ от indexeddb и опубликовать для просмотра [app]

Поток работает для меня, но я не доволен тем, как я решил точку 5. В этот момент, после того как работник службы уволен, в следующей строке кода приложения я запускаю метод setInterval чтобы периодически проверять, есть ли новая строка в таблице responses.

Есть ли способ отправить событие из синхронизации службы-работника в приложение, чтобы он знал, что данные ждут его?

Или, может быть, есть событие на indexeddb, на которое я могу подписаться на прослушивание изменений?

Теги:
service-worker
indexeddb
progressive-web-apps

1 ответ

1
Лучший ответ

Вы должны иметь возможность настроить канал сообщений между ServiceWorker и вашим приложением. На высоком уровне связь с приложением в ServiceWorker будет происходить на одном порту канала, а связь с ServiceWorker обратно на приложение будет происходить на другом порту канала. Вместо опроса для обновленных данных ваш ServiceWorker должен просто сообщить вашему приложению, что ответ успешно сохранен.

Наткнулся на это сообщение в блоге, которое должно помочь вам начать работу в правильном направлении: https://ponyfoo.com/articles/serviceworker-messagechannel-postmessage

Ещё вопросы

Сообщество Overcoder
Наверх
Меню