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

我正在使用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 }); } }); 

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

我知道,我可以使用计数器并在第一次调用回调函数,但我并不认为这是一个很好的解决方案,因为我关闭某些东西并没有合理意义。 (两次开火)