使用ajax / setInterval假推送通知?

时间:2012-06-28 14:44:21

标签: javascript apache push-notification comet long-polling

我想知道处理服务器与客户端<div>的自动更新的优缺点。我正在使用Apache和PHP,但只是考虑在Javascript中伪造推送通知,如下所示:

setInterval(queryDatabaseForUnreadMessages, 60000);

function queryDatabaseForUnreadMessages(){
   $.ajax({
       url: "/messages/queryDatabaseForUnreadMessages",
       success:function(data){
          $('div#littleRedCircle').html(data);
       }
   });
}

我只想设置一个类似Stackoverflow的通知(带有数字的小红圈),让人们知道他们收到了新消息(如果有的话)。这个简单的AJAX / setInterval组合是个坏主意吗?

2 个答案:

答案 0 :(得分:3)

服务器推送的唯一内容是实施成本(时间,金钱)

服务器推送是可行的方法,因为

  1. 从用户的角度来看,实时通知更好
  2. 它具有可预测的成本(因此可扩展)
  3. 减少带宽消耗
  4. 保存服务器负载
  5. 这取决于您选择的具体要求,因为服务器端推送的实施成本并非微不足道,因为它不是单个PHP脚本的问题,而是需要深度服务器集成(也许您将拥有完全安装另一个HTTP服务器)并涉及通常不用PHP构建的其他软件(消息队列?)

答案 1 :(得分:2)

来自IETF DOC

Long Polling in Contrast with Pull

What are the issues with Long Polling though? 来自DOC

  1. 标题开销
  2. 最大延迟
  3. 连接建立
  4. 分配资源
  5. 优雅退化
  6. 超时&amp;缓存
  7. 正如我在评论中提到的那样

    长轮询是实时的,而拉近实时[由轮询间隔确定]

    Pull将客户端的带宽视为理所当然:P

    如DOC中所述,这两种技术都很好地利用了HTTP 1.1的持久连接。

    Pull易于实现,并且跨浏览器得到很好的支持。虽然Push缺乏这一点,但是库可以用于救援;)。