如何用jQuery实现通知系统?

How can I implement notification system with jQuery?

本文关键字:系统 通知 实现 何用 jQuery      更新时间:2023-09-26

我有一个通知区,我想更新时,有人发送的消息,例如使用jQuery或Ajax(我的数据库是在一个soap服务器),我想做soap调用每秒钟左右,我怎么能做到这一点?

您可以使用一个简单的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请求。

引用:

  • $.get()
  • setInterval()

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

MDN解释:

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

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

(function loop(){    
    setTimeout(function(){
        // logic here
        // recurse
        loop();
    }, 1000); 
})(); 
在上面的代码片段中,声明了一个命名函数循环并立即执行。递归地调用loopsetTimeout内部执行逻辑完成后。虽然这模式不能保证在固定的时间间隔内执行,但它可以保证在递归之前完成前一个间隔。

实时web的最佳方式是node.js

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

但是你可以通过setInterval或setTimeout来实现,在你的interval中加入一个Ajax调用。

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