Я разработал веб-приложение: это викторина, в которой два пользователя по очереди играют друг против друга. Таким образом, во время матча ход либо пользователя А, либо пользователя Б. Я хочу использовать push-уведомления (используя Web Push API), чтобы информировать пользователя о том, что его оппонент сыграл и настала его очередь.
Мне интересно, есть ли оптимальный способ сделать это, используя подручные технологии (сервисные работники, Push API). А если идеального решения нет, что может быть хорошим компромиссом?
Чего я в идеале хочу достичь (вероятно, невозможного):
- пользователи должны быть уведомлены на всех их устройствах, вошедших в систему, когда наступает их очередь
- когда они играли на одном устройстве, другие устройства больше не должны уведомлять о том, что настала их очередь.
Усложнения/ограничения:
- Настольные браузеры, такие как Chrome и Firefox, доставляют уведомление только тогда, когда они полностью запущены. Отправленные уведомления ставятся в очередь до тех пор, пока не будет запущен браузер.
- Помимо установки времени истечения срока действия (
time_to_live
), нет способа отозвать уведомление после его отправки (правильно?) - Это означает, что когда пользователь сыграл несколько раундов на одном устройстве, на других устройствах остается довольно много устаревших уведомлений, ожидающих отображения (нехорошо).
- Дополнительное ограничение для Chrome: вы должны показывать уведомление при получении push-сообщения.