Jquery 如何在ajax中进行comet长轮询

Jquery 如何在ajax中进行comet长轮询,jquery,ajax,Jquery,Ajax,下面是我每隔一段时间向服务器发出的ajax请求。我想知道在服务器没有返回数据的情况下,如何保持请求打开 (function newMessage(){ jQuery.ajax({ method: "POST", url:"/index.php", "data": data, error: function() { reject('error');

下面是我每隔一段时间向服务器发出的ajax请求。我想知道在服务器没有返回数据的情况下,如何保持请求打开

    (function newMessage(){
          jQuery.ajax({

           method: "POST",
           url:"/index.php",
           "data": data,
           error: function() {
             reject('error');
           },  
           success: function(result) {
             console.log(result);          
           }
       });
         setTimeout(function(){
            newMessage();
          }, 3000);
      })()
在服务器端,我使用usleep,而服务器不返回任何数据,希望这个对服务器的请求保持打开状态。但它仍然会发出其他请求,使每个请求保持打开状态

 //request to server
    $results = $model->getNewMessages($id, $userId, $lastupdate);
        $counter = sizeof($results);

       while($counter == 0){
        usleep(10000); 
       }