Я пытаюсь реализовать push-уведомления на своем веб-сайте на основе PHP -. Цель состоит в том, чтобы сделать что-то похожее на то, что есть на Stackoverflow и других сайтах, которые уведомляют пользователя в реальном -времени, когда он получает сообщение.
Я использую mysql в качестве своей базы данных, Apache в качестве своего сервера и рассматриваю возможность использования Amazon -SNS в качестве основы для этих уведомлений, поскольку, похоже, для этого и предназначена эта служба.
Я плохо понимаю из литературы, как программно настроены страницы sending.php
и receiving.php
. Я бы предположил, что страница sending.php
просто включает $_POST['message']
на какую-то страницу, но оттуда я действительно потерялся.
Если бы что-то могло помочь мне понять, как будет выглядеть страница receiving.php
для push-уведомления, я был бы очень признателен.
Я просто хотел поделиться с вами фактической реализацией. Я решил пойти с замечательным 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>