我有一种情况,我有网络套接字服务器和OSC消息客户端。当我从OSC服务器收到消息时,我需要向所有套接字用户发送数据。到目前为止,我只是在socket.io连接函数中放置了OSC事件,因此它创建了内存泄漏。因为它为全局变量" oscServer"创建了一个新的事件发射器。我该如何避免这种情况?
var io = require('socket.io')(server);
var oscServer = new osc.Server(oscPorts.server, oscIp.server);
io.on('connection', function (socket) {
oscServer.on(oscAdress.server, function (msg, rinfo) {
socket.broadcast.emit('moved', msg);
});
});
答案 0 :(得分:1)
我会尝试保存对socket
的引用,唯一的警告 - 您需要确保var socket
不是undefined
,所以我会使用promise
确保在广播事件之前定义套接字。
var io = require('socket.io')(server);
var oscServer = new osc.Server(oscPorts.server, oscIp.server);
var socket;
io.on('connection', function (s) {
socket = s;
});
oscServer.on(oscAdress.server, function (msg, rinfo) {
socket.broadcast.emit('moved', msg);
});