Реализация системы сообщений для Yii - PullRequest
2 голосов
/ 29 декабря 2011

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

например

Вы отправляете мне сообщение, и мне будет показано сообщение Красный значок зеленого цвета. Очевидно, нам понадобится таблица базы данных для хранения идентификатора получателя идентификатора отправителя и т. Д., Но как мы реализуем его таким образом, чтобы пользователю не нужно было нажимать кнопку обновления.

Я новичок в сети из c # фона, поэтому не знаю столько способов.

Я разрабатываю это в Yii. Несколько предложений было бы замечательно

1 Ответ

3 голосов
/ 30 декабря 2011

Вы можете сделать это с помощью простого периодического обновления метода javascript.

Что-то подобное в представлении с индикатором сообщения:

<?php Yii::app()->clientScript->registerScript('autoupdate-div-inbox-update',
            "setInterval(function(){
                // do an ajax call to server to check for new messages
                // using jquery's ajax method
                $.ajax({
                    url: 'http://example.com/index.php?r=controller/action',// this is the url that will check for new messages for the current user
                    success: function(data) {// data is the data returned from the server
                        if(data){
                            // update your new message div
                            // you can show your red icon here
                        }
                    }
                });
                return false;
             },1000);"
      );
?>

Такпроисходит то, что метод setInterval выполняет функцию каждые 1000 миллисекунд, и функция проверяет наличие новых сообщений, используя ajax.

Если вы не знаете ajax в yii, проверьте следующее для действия контроллера:

public function actionMessages(){
    // check for new messages in the db
    $xyz = checkMessage();
    // assuming checkMessage returns the number of new messages if any or false if none
    // whatever we echo will be available to the javascript we wrote in the data variable
    echo $xyz;
}

Подробнее о методах синхронизации в javascript .

Этот шаблон также называется опросом, существуют также другие популярные методы, такие как long polling и серверный push , с которым я не очень хорошо знаком, но вы должны также проверить их, прежде чем принимать решение по шаблону.

Надеюсь, это поможет, попросите разъяснений, если таковые имеются.

...