NodeJS HTTP请求连接的close事件被触发两次

时间:2011-08-28 15:44:07

标签: jquery ajax node.js long-polling

我正在使用NodeJS中的长轮询实时AJAX应用程序。我想检测用户何时关闭具有待处理长轮询请求的选项卡。我使用NodeJS连接关闭事件:

request.connection.on('close', function () {
  console.log(request.url);      
  ... 
}); 

AJAX循环如下所示:

var EventLoop = new (function () {

  var self = this;

  this.listen = function () {
    $.postJSON(
      'recieve-events', 
      { /* some data not important for this issue */ }, 
      function (data) {
        ...
        self.listen();
      }
    );
  }

})();     

这是postJSON函数的定义方式:

$.extend({
  postJSON: function (url, data, callback) {
    $.ajax({
      'url': url, 
      'dataType': 'json', 
      'data': data,
      'type': 'POST', 
      'success': callback
    });
  }
});

问题是,当我关闭选项卡时,连接关闭事件被触发两次。任何人都可以解释为什么以及如何防止这种行为?

我知道,我可以使用计数器并在第一次调用回调函数,但我不认为这是一个很好的解决方案,因为关闭某些东西对我来说没有逻辑意义,已经关闭。 (两次发射事件)

0 个答案:

没有答案