Делаю новостной сайт . При добавлении новости осуществляется уведомление всем пользователям о новой новости . Реализовал серверную часть с помощью Rachet и ZMQ , с клиентской частью не совсем понимаю как сделать . Пока что сделал уведомления только через консоль , все работает . Но не через консоль же пользователей оповещать . Вопрос в том , как сделать оповещения что-то типа вк ? какие инструменты использовать , чтобы большинством браузеров поддерживалось? Спасибо за ответы
Есть два типа пуш уведомлений: на одном вебсокеты точеные, с другим проблем тоже хватает.
Первый тип - это если у вас вкладка с сайтом открыта, соответственно ваш js там преспокойно выполняется.
Второй тип - настоящие пуш уведомленя. Если у вас вкладка с сайтом не выделена или вообще закрыта. Но браузер открыт при этом.
Для реализации первого типа вам по сути нужна любая обычная система мессаджей от вашего сервера вашему клиенту. Это могут быть хоть вебсокеты, может быть лонг поллинг, может быть sse. Да хоть сигнальные костры на гуглмапс =)
Алексей Шиманский в своем комментарии подразумевал именно этот тип сообщений.
Со вторым типом все сложнее. И реализовать их "просто прикрутив какую-то библиотеку или плагин на js" нельзя. Потому что нету этого вашего клиентского js когда вкладка закрыта. Ну собственно почему у клиента должен выполняться ваш скрипт если он не у вас на сайте?
Сделать это можно, но на пути нас поджидают неприятности.
Начнем с того, что есть спецификация Notifications api. Но разумеется она еще совсем не готова, браузеры ее нормально не поддерживают (что поддерживать то, что десять раз еще поменяется). Использовать в кровавом энтерпрайзе нельзя точно. Если у вас много энтузиазма и смузи, можете попробовать прикрутить для каких-то браузеров.
И поэтому решается это сейчас так: крупные вендоры браузеров предоставляют свои сервисы, через которые можно соответственно можно работать с браузерами этих вендоров. GCM и APNS о которых упомянул в своем ответе misc - это соответственно такие сервисы для гугла и эпла. Есть пачка и от менее крупных компаний.
Это разумеется порождает следующую проблему: для того чтобы у вас все было чудесно кроссбраузерно и розовые единороги прыгали по зеленой лужайке, вам нужно найти как можно больше таких сервисов и для каждого написать прослойку на своей стороне, которая будет этот сервис дергать. А универсального формата нету. А сервисов не так уж и мало. И каждый что-то да меняет иногда, и придется поддерживать как-то этот зоопарк.
Соответственно появились прослойки разной степени надежности, функциональности и платности. Упомянутые пользователем mics onesignal.com и clevertap.com относятся к таким прослойкам.
А теперь к плохому. Готовое работающее исключительно бесплатное решение я не нашел (искал где-то полдня, если кто-то подскажет, буду благодарен.). Есть решения платные, есть сервисы предоставляющие бесплатную триалку и есть "бесплатные".
Вот onesignal.com - это сервис "бесплатный". Денег за свое решение они с вас не возьмут, но, насколько я понял из их соглашения, оставляют за собой право использовать и продавать данные которые вы через них пересылаете, третьим лицам. Вам подходит? Тогда попробуйте их.
Насколько я понял, вы для отправки Web Push (если это все-таки они, по вашему вопросу не совсем понятно) зачем-то используете вебсокеты. Для этого используют, например, чистые GCM/APNS, или сервисы, которые нюансы подключения к GCM/APNS решают за вас, например:
При выборе первого поля, меняется значения второгоНо при первом открытии страницы, во втором поле, должно быть по умолчанию только "Выберите...
Делаю следующие действия 1Зарегистрировалась на сайте firebase (вошла со своего гугл аккаунта) и создала там проект 2
Ребят может мне кто нибудь объяснить почему в первом button'e неработает функция закрытия, а во втором работает? И как эт возможно исправить?