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 }); } });
问题是,当我关闭选项卡时,连接关闭事件被触发两次。 任何人都可以解释为什么以及如何防止这种行为?
我知道,我可以使用计数器并在第一次调用回调函数,但我并不认为这是一个很好的解决方案,因为我关闭某些东西并没有合理意义。 (两次开火)