Мы обнаружили, что ряд браузеров вообще не имеет в своём арсенале встроенный GCM-сервис. Среди них, к примеру, Опера, Вивальди, Firefox. В Safari есть APNS, но мы реализуем работу через него чуть позже.

Также сегодня был яркий пример необходимости этой функции — один из пользователей пожаловался, что у него на работе не работают пуши: ни веб, ни через дополнение. Все дело в том, что у него на работе заблокированы все лишние порты. В нашем случае, сокет работает через проксирующий nginx на 443 порту и не блокируется фильтрами.

Нам необоходимо небольшое нагрузочное тестирование, а также проверить все ли уведомления приходят нужным адресатам. Данные уведомления проверены мною в chrome и firefox. Необходима проверка в edge, ie (хотя сомневаюсь, что будет работать) и конечно safari.

Прежде всего это удобный метод включить уведомления «на время», а потом выключить их закрытием вкладки. В отличии от других способов, данный метод не работает при закрытой вкладке или окне браузера. По поводу включения, и немного о архитектуре — подробнее под катом.

Как включить?


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

Как это работает?


За основу взята статья — Делаем вебсокеты на PHP с нуля

Я сделал мастер, который отслеживает все запросы к сокету, и воркер, который слушает redis-подписку для приёма команд на отправку оповещений, добавления или удаления пользователя. Причем мастер слушает общий сокет с воркером, а воркер в этот сокет только пишет, когда нужно отправить оповещение. В свою очередь мастер слушает также сокеты подключенных пользователей и сокет для соединения. Это позволяет в 2х процессах проверять и сокеты, новые уведомления и общаться между двумя процессами без каких-либо блокировок.

В Unicast пока что нет поддержки этой функции, сделано для того, чтобы личные, важные пуши не улетели куда не надо в случае сбоев альфа-версии.

Где будет применяться?


  • Временный метод получения уведомлений
  • Получение уведомлений на неподдерживаемых браузерах
  • Различные плагины для других браузеров, в первую очередь, сделаем плагин для FF
  • Стационарный клиент для компьютеров


Как тестировать?


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

Отпишите как работает в различных браузерах. Можно в комментариях, или в нашем сообществе Google+

3 миллиона уведомлений каждый месяц


Мы немного перепутали, оказывается в прошлый раз мы уменьшили число оповещений с 5к в день, до 3к в день. Теперь мы поднимаем до 100к в день.

PS. В сафари протестировали — оно работает.



А вот в Edge похоже работать и не будет, мне сообщили, что он даже не запрашивает доступ к уведомлениям, то есть похоже он вообще не поддерживает их.

То есть каждый месяц вы можете бесплатно рассылать 3 миллиона уведомлений.
Работают универсальные уведомления?

Проголосовало 22 человека. Воздержалось 79 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (5)


  1. shumaher86
    21.10.2015 16:55

    тестилка уведомлений со страницы Администрирования не работает в FF — после нажатия на «Отправить» происходит редирект на главную. но сами SocketPush'ы работают, если нажать на ссылку «Пинг»


    1. BupycNet
      21.10.2015 17:05

      Значит бага в форме. Помню в одном месте я правил это в этой форме значит нет. Тогда видимо без этого теста придётся обойтись. Хотя может сейчас с телефона исправлю. Буду за ноутом только к вечеру.


    1. BupycNet
      21.10.2015 17:11

      Поправил тестилку. Попробуйте Интересует кстати больше всего edge и Safari. Т.к. в FF и хроме уже тестировал.

      Я думаю это будет неплохое решение, учитывая что сервис универсальный. Многие кстати и так держат открытую вкладку PushAll.


      1. shumaher86
        21.10.2015 17:16

        к сожалению, ни Safari, ни Edge у меня нигде не имеется.


  1. ainu
    21.10.2015 17:41
    +7

    Комментарии и опрос похожи на таску для тестировщиков и переписку в Jira.