Мгновенные уведомления - PullRequest
2 голосов
/ 15 марта 2012

То, что я хочу знать и изучить, это выяснить, как я могу иметь страницу / функцию или что не загружается каждые пару секунд, или что не так, как я могу мгновенно сообщать об уведомлении своему пользователю в моей CodeIgniter CMS.что у них есть новое личное сообщение в их почтовом ящике.

Когда пользователь попадает на панель мониторинга с экрана входа в систему, когда пользователь нажимает на конверт, он отображает последние 5 сообщений, и если они получают синхронное сообщение в личкуон сразу же уведомит их с небольшим наложением, которое покажет, и увеличит красный круг, если он уже существует, или добавит его как 1.

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

В вашем контроллере:

$this->load->library('javascript');

На ваш взгляд:

<script>
$(window).load(function checkMessages() {
$.ajax({
url: 'instant_messenger.php', 
success: function(data) {
$('messagebox').html(data);
}});
setTimeout('checkMessages', 5000);
});
</script>

... где «instant_messenger.php» - это ваш скрипт, который проверяет наличие новых сообщений, а «messagebox» - это элемент html, где вы хотите, чтобы сообщение отображалось.

Это базовый пример, но этот скрипт будет запускать check_messages.php каждые 5 секунд и помещать вывод на страницу пользователя без перезагрузки.

1 голос
/ 16 марта 2012

Я полагаю, ваш javascript уже загружен, я полагаю, вы также используете jquery.Итак, с этим.

Мое предложение будет немного похоже на предложение Чада.Но в каком-то смысле более пригодный для повторного использования, если вы хотите назвать его независимо по какой-либо причине.

var $messageCountJSON;
var messageTimer = '';
var messageInterval = 5;

//assumed JSON response is {"count":"20"} for example sake.

function messageCount(displayElementID)
{
    $.get('/url/to/script/', function(data)
    {
        $messageCountJSON = data; 
    }, 'json');
    if(displayElementID != null && displayElementID != undefined && displayElementID != '')
    {
        $('#'+displayElementID).html(data.count);
    }
}

$(document).ready(function()
{
    messageTimer = setInterval(function(){messageCount();}, messageInterval*1000);
});

//you can optionally kill the timed interval with something like
$('#element').click(function(){clearInterval(messageTimer);})

Я, конечно, просто вытаскиваю это из своей задницы по прихоти, когда я печатаю, так что это не 100%проверено, но, тем не менее, стоит попробовать.

Стоит отметить, что это не мгновенное уведомление.Это асинхронный;уведомление, означающее, что каждые 5 секунд в этом случае вы будете отправлять запрос на получение скрипта и получать от него данные соответственно.Если вы хотите мгновенное уведомление, вы можете заглянуть в синхронный;Данные, передаваемые между точкой сценария и клиентской стороной, никогда не закрываются.У обоих есть свои плюсы и минусы.Асинхронный чаще используется как меньшее из двух зол.Более того, синхронная синхронизация без необходимого оборудования для поддержки и без правильной настройки может привести к тому, что ваш сайт заблокируется и заблокирует браузер пользователей.

...