事件发射器内的事件发射器使用socket.io node.js

时间:2014-06-19 16:08:45

标签: javascript node.js socket.io

我有一种情况,我有网络套接字服务器和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);
  });

});

1 个答案:

答案 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);
   });