如何使用jQuery实现通知系统?

时间:2013-05-10 23:16:18

标签: javascript jquery ajax

我有一个通知区域,当有人发送消息时,例如使用jQuery或Ajax(我的数据库在肥皂服务器中)我想要更新通知区域我想每隔一秒左右进行一次soap调用,我该怎么办?是什么?

3 个答案:

答案 0 :(得分:3)

您可以使用简单的setInterval结构以预定义的间隔执行AJAX调用。像这样:

setInterval(function(){
  $.get('ajax_responder.php',dataObj,function(){
    // ajax callback
    // here is where you would update the user with any new notifications.
  });
},5000);

前面的代码将每5000毫秒(每5秒)执行一次AJAX请求。

参考文献:

答案 1 :(得分:3)

我强烈建议使用setInterval()而不是setTimeout()

MDN explanation

  

如果您的逻辑可能需要更长时间才能执行   比间隔时间,建议你递归调用一个   使用window.setTimeout命名的函数。例如,如果使用   setInterval每隔5秒轮询一次远程服务器,网络延迟,   一个没有响应的服务器,以及许多其他问题可能会阻止   要求在分配时间内完成。因此,你可能会发现   你自己排队的XHR请求不一定会返回   顺序。

     

对于这种情况,首选递归setTimeout模式:

(function loop(){    
    setTimeout(function(){

        // logic here

        // recurse
        loop();
    }, 1000); 
})(); 
     

在上面的代码片段中,声明了一个命名的函数循环并立即执行。   递归调用loop   逻辑完成执行后在setTimeout内。虽然这个   模式不保证在固定的时间间隔内执行,确实如此   保证在递归之前完成前一个间隔。

答案 2 :(得分:1)

实时网络的最佳方式是node.js

  

Node.js是一个基于Chrome JavaScript运行时的平台,可轻松构建快速,可扩展的网络应用程序。 Node.js使用事件驱动的非阻塞I / O模型,使其轻量级和高效,非常适合在分布式设备上运行的数据密集型实时应用程序。

但您可以setInterval or setTimeout执行此操作,在您的间隔内进行Ajax来电。

var intval = setInterval( function() 
{
   $.get('url.php',  {data1: "value1", data2: "value2"},  
   function(response)
   {  
            // response  
   });  
}, 1000);