setInterval是获取通知的正确方法吗?

时间:2017-09-26 07:41:38

标签: javascript jquery notifications yii2-advanced-app

我需要在yii2构建的系统中创建消息通知,

所以我用这种方式

1- i在消息中创建控制器函数getnew:

public function actionGetnew()  
{
     $query1 = new Query;                              
      $query1->select([" count(*) as  price "]   )
              ->from('messeges');
              //->where // here   i will add the id of user that logged in and the state of unread messages ! 
     $command1 = $query1->createCommand();
     $price = $command1->queryAll();  
     echo Json::encode($price); 
}

2-我创建了一个js文件:

window.onload = function() {

   setInterval(function(){ 
    $.get('index.php?r=messeges/getnew',function(data)
    {
        var data=$.parseJSON(data);

        $(".messages").html(data[0].price);
    });
 }, 5000);
};

3-我添加了这样的HTML标记:

  <h6 class="messages"></h6>

一切正常但我的问题是正确的方法吗? ,这会增加我的服务器上的流量和负载吗?如果有更好的主意,请通知我!

1 个答案:

答案 0 :(得分:1)

这不是最佳方式。

你是对的 - 它可能会导致流量和负载增加。

更好的选择是:

  1. Longpooling

  2. Server events

  3. WebSockets

  4. 首先尝试考虑socket.io(他们在网站上遇到了一些问题 - 稍后再试一次:-))