Yii的消息系统实现

时间:2011-12-29 13:05:35

标签: php module yii message

这已在很多网站上实现,比如odesk左右。我在想的是实现一个消息发送方案,通知用户他们已收到消息。

例如

您向我发送消息,我将显示消息绿色的红色图标。显然我们需要一个数据库表来存储发送者ID接收者ID等等,但我们如何以用户不需要点击刷新按钮的方式实现它。

我是c#background的新手,所以不知道多少方法。

我在Yii开发它。很少有建议会很棒

1 个答案:

答案 0 :(得分:3)

您可以使用简单的periodic refresh 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检查新消息。

如果您不知道yii中的ajax,请检查以下控制器操作:

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

此模式也称为轮询,还有其他流行的方法,如长轮询服务器推送,我不是很熟悉,但你应该在决定模式之前,请检查它们。

希望这有帮助,请求澄清,如果有的话。