这已在很多网站上实现,比如odesk左右。我在想的是实现一个消息发送方案,通知用户他们已收到消息。
例如
您向我发送消息,我将显示消息绿色的红色图标。显然我们需要一个数据库表来存储发送者ID接收者ID等等,但我们如何以用户不需要点击刷新按钮的方式实现它。
我是c#background的新手,所以不知道多少方法。
我在Yii开发它。很少有建议会很棒
答案 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。
此模式也称为轮询,还有其他流行的方法,如长轮询和服务器推送,我不是很熟悉,但你应该在决定模式之前,请检查它们。
希望这有帮助,请求澄清,如果有的话。