我是节点的新手,我在开发应用程序时一直在玩,到目前为止一直很好。我正在使用带有http服务器的socket.io。所有工作都按预期工作,但....我有一个按钮发出到套接字,10次点击后,我得到一个关于检测到的事件内存泄漏和setMaxListeners的日志警告。到目前为止,我在其他问题上看到,我必须在发出后删除听众,而不是采取增加Max Listeners的快捷方式,但我一直在尝试没有成功。
我的客户端代码如下:
$(document).ready(function () {
$("#validate").click(function () {
socket.emit('stop', "validate button");
});
});
在服务器端:
io.sockets.on('connection', function (socket) {
// WE RECEIVE stop
socket.on('stop', function (msg) {
console.log(msg);
clearInterval(refresh);
});
});
如何在事件发生后删除侦听器?
任何灯光都会受到赞赏。提前致谢
答案 0 :(得分:1)
要仅触发客户端事件一次,因为您使用的是jQuery,您可以使用one()
函数,如下所示:
$(document).ready(function () {
$("#validate").one('click', function () {
socket.emit('stop', "validate button");
});
});
在服务器端,试试这个:
io.sockets.on('connection', function (socket) {
// WE RECEIVE stop
socket.on('stop', stopHandler);
function stopHandler (msg) {
console.log(msg);
clearInterval(refresh);
socket.removeListener('stop', stopHandler);
}
});