2013-05-14 63 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