nodejs Websocket Server - 检测到可能的EventEmitter内存泄漏

时间:2016-06-26 16:49:26

标签: node.js websocket eventemitter

我对节点比较陌生,我很难找到答案!

我创建了一个非常基本的节点脚本,用于连接到rs232串口设备,同时它作为websocket服务器,以便客户端可以连接到它以从rs232设备获得实时输出但是我在11个客户端连接后,不断获取事件发射器最大侦听器错误。

如果任何人可以在这里帮助我,或者如果我以错误的方式对代码进行了提供一些建议,我们将不胜感激。

由于 杰米

继承人的代码

ProcessingEnvironment.getElements()

1 个答案:

答案 0 :(得分:1)

如果是连接处理程序,则添加新的事件处理程序serialPort.on('data', ...)。因此,对于每个新的传入websocket连接,您都为serialPort添加了一个新的事件处理程序。而且,你永远不会删除它们。所以,他们只是永远积累,他们也都做同样的事情。

您看到的警告是因为eventEmitter对象看到同一消息的所有事件处理程序的累积,并怀疑某些内容可能是错误的。

相反,您可以将其移出连接处理程序,并在一个事件处理程序中执行所有处理:

serialPort.on('data', function(data) {
    var weight = data.toString();
    wss.clients.forEach(function(wssclient) {
        wssclient.send(weight);
    });
});

serialPort.on("open", function () {
    console.log('open');
    wss.on("connection", function(ws) {
        // code here that needs to happen upon connection
    });
});