Как работают push-уведомления?

Я пытаюсь реализовать push-уведомления на своем веб-сайте на основе PHP -. Цель состоит в том, чтобы сделать что-то похожее на то, что есть на Stackoverflow и других сайтах, которые уведомляют пользователя в реальном -времени, когда он получает сообщение.

Я использую mysql в качестве своей базы данных, Apache в качестве своего сервера и рассматриваю возможность использования Amazon -SNS в качестве основы для этих уведомлений, поскольку, похоже, для этого и предназначена эта служба.

Я плохо понимаю из литературы, как программно настроены страницы sending.phpи receiving.php. Я бы предположил, что страница sending.phpпросто включает $_POST['message']на какую-то страницу, но оттуда я действительно потерялся.

Если бы что-то могло помочь мне понять, как будет выглядеть страница receiving.phpдля push-уведомления, я был бы очень признателен.

26
задан tim peterson 21 July 2012 в 14:25
поделиться

1 ответ

Я просто хотел поделиться с вами фактической реализацией. Я решил пойти с замечательным SAAS, Pusher , так как есть много сложных вопросов в реализации Push-уведомлений, как я понял, прочитав ссылки в превосходном ответе @ Virendra, которые Pusher решает для вас.

Больше всего меня поразило то, как мало кода нужно написать, чтобы эта работа работала. Увидеть ниже. Моя серверная часть на PHP ( У Pusher есть библиотеки на многих языках ).

require('/application/thirdParty/pusher-html5-realtime-push-notifications/lib/squeeks-Pusher-PHP/lib/Pusher.php');
require('/application/thirdParty/pusher-html5-realtime-push-notifications/config.php');
$pusher = new Pusher(APP_KEY, APP_SECRET, APP_ID);

foreach($recipients as $row){                   
  $channel='my-channel'.$row->recipient_id;
  $pusher->trigger($channel, 'notifications', 
    array('message' => $row->message,
          'notification_id' => $row->notification_id) 
  );
}

Вот HTML / JS (не перегружайтесь, большая часть этого кода просто заполняет маленький кружок и список входящим уведомлением, как это делают Stackoverflow и другие):

<script src="/application/thirdParty/pusher.min.js"></script>
<script>     
var myID=179; // would receive notification if myID matches $row->recipient_id above;
var myChannel = pusher.subscribe('my-channel'+myID);
myChannel.bind('notifications',
  function(data) {
        var message=String(data.message),
            url='/notifications/'+data.notification_id, 
            icon='<i class=\'icon-heart\'></i>',
            urlText=icon+message;

        var notificationRow='<li><a href='+url+'>'+urlText+'</a></li>';
         $('#notificationsDropdownList').prepend(notificationRow);   

        if(notificationCircleCount==0){
             notificationCircleCount++;
              $notificationCircle.show();
               $notificationCircleCount.html(notificationCircleCount);
        }
        else{
             notificationCircleCount++;
             $notificationCircleCount.html(notificationCircleCount);
        }
        console.log('Pusher happened'+data.message);                  
  } //function
); //myChannel
</script>
4
ответ дан tim peterson 21 July 2012 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: