2011-12-29 5 views
2

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

, например

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

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

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

ответ

3

Вы можете сделать это с помощью простого метода javascript periodic refresh.

Нечто подобное в представлении, что имеет индикатор сообщений:

<?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; 
} 

Подробнее о timing methods in javascript.

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

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

+2

спасибо. url может просто быть: url: 'controller/action'. Поскольку я использую порт 82 для apache, поэтому было бы неудобно вручную модифицировать его для адаптации к новой конфигурации сервера. – Silentbang

+0

потрясающий, хороший я тоже чему-то научился. –

+0

О, я забыл. «controller/action» подходит только в том случае, если мы хотим реализовать это в представлении. мы должны контактировать строку, например url: \ "". CController :: createUrl ('контроллер/действие'). «\», – Silentbang