#javascript #php #node.js #symfony #push-notification
#javascript #php #node.js #symfony #push-уведомление
Вопрос:
Я разрабатываю веб-приложение с Symfony2. Мне нужно создать систему push-уведомлений (например Facebook). Когда пользователь что-то публикует, мне нужно, чтобы кто-то из других пользователей получал уведомление.
Я видел, что Node.js это самый простой способ сделать это. Но я привел несколько простых примеров, и все работает нормально, но я не знаю, как я могу это интегрировать node.js приложение с моим приложением Symfony2 или действительно с приложением PHP.
Кто-нибудь может мне помочь?
Заранее спасибо!
Ответ №1:
Пожалуйста, обратите внимание, что вы не предоставили достаточно подробностей, поэтому я отвечу как интерфейсный разработчик, а не как разработчик мобильных устройств
Интеграция NodeJS и PHP (в целом) не является хорошим способом, поскольку вам нужно запускать оба сервера по отдельности, создавать сервер websocket на JS, пока ваше приложение работает на PHP, и, наконец, создавать запрос (GET или POST) от вашего PHP к вашему JS-серверу. Ну, большая неразбериха, поэтому я представлю свое решение здесь, в разделе.
Быстрый анализ для мобильных приложений.Ну, технически, простого способа нет. Вы можете использовать Push-«протокол» (http://www.wikiwand.com/en/Push_technology ) с помощью NotificationPusher (https://github.com/Ph3nol/NotificationPusher ). Я не использовал его раньше, поэтому не могу вам с этим помочь.
В общем.В большинстве случаев, когда люди думают о Push, длительный опрос сделает свое дело. Для начала это означает, что запрос выполняется на стороне клиента, и сервер не отправляет данные и не закрывает соединение, пока не появятся новые данные.
Как вы это реализуете ?!?По сути, вы изменяете время max_execution_time с помощью ini_set или set_time_limit на очень долгое время для текущего скрипта и запускаете цикл (например, do ..while) с переходом в режим ожидания и проверкой ваших данных внутри. Из вашего Javascript просто выполните вызов Ajax, например, с помощью jquery: $.get. Просто не забудьте убрать тайм-аут и оставаться в асинхронном режиме.
Единственным недостатком этого решения является то, что у вас всегда будет открыто соединение с вашим сервером, которое будет потреблять немного больше заряда батареи на мобильном устройстве. Если вам нужно получать несколько типов данных, не стесняйтесь объединять вызовы и публиковать тип в ваших данных ответа, поскольку большинство браузеров допускают только 2 или 3 одновременных подключения к одному серверу.
Ответ №2:
Похоже на то, как вы описываете WebSockets.
Взгляните на Socket.io это модуль для node.js .
Также есть пример на GitHub https://github.com/Automattic/socket.io/tree/master/examples/chat
Интересными файлами для вас должны быть index.js и public/main.js .
Вы можете посмотреть пример в прямом эфире наhttp://socket.io/demos/chat /