2013-05-14 32 views
0

只是一个围绕优化和DRY的简短问题。我有我的节点服务器,一切正常,但我想知道如何清理未来的开发人员。我有一组事件被分配像这样:在node.js中轻松创建多个socket.io事件

var debug = true;  
io.sockets.on('connection', function (socket) { 
    console.log('User connected!'); 

    socket.on('event-one', function (data) { 
     if(debug) { console.log('Event 1!'); } 

     socket.broadcast.emit('event-one', data); 
    }); 

    socket.on('event-two', function (data) { 
     if(debug) { console.log('Event 2!'); } 

     socket.broadcast.emit('event-two', data); 
    }); 

    socket.on('event-three', function (data) { 
     if(debug) { console.log('Event 3!'); } 

     socket.broadcast.emit('event-three', data); 
    }); 

}); 

正如你所看到的,我重复了socket.on()方法。有没有更有效的写作方式?我尝试了一个for循环的简单数组,但事件停止工作。

任何输入,将不胜感激。 谢谢。

回答

0

不知道为什么你的循环没有工作,这工作得很好:

var debug = true; 
var events = [ 'event-one', 'event-two', 'event-three' ]; 

io.sockets.on('connection', function (socket) { 
    events.forEach(function(ev) { 
    socket.on(ev, function(data) { 
     if (debug) { 
     console.log('got event:', ev); 
     } 
     socket.broadcast.emit(ev, data); 
    }); 
    }); 
}); 
+0

罗伯特·您好,我会给你的版本尝试并报告。谢谢 – Nooshu 2013-05-14 21:02:20