简体   繁体   English

在node.js中轻松创建多个socket.io事件

[英]Easily create multiple socket.io events in node.js

Just a quick question around optimisation and DRY. 关于优化和DRY的一个简单问题。 I have my node server and everything works as it should, but I want to know how to clean up for future devs. 我有节点服务器,一切正常,但是我想知道如何为将来的开发人员清理。 I have a set of events being assigned like so: 我分配了一组事件,如下所示:

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

});

As you can see I'm repeating the socket.on() method. 如您所见,我正在重复socket.on()方法。 Is there a more efficient way of writing this? 有没有更有效的方式编写此代码? I tried a simple array with a for loop but the events stopped working. 我尝试了一个带有for循环的简单数组,但是事件停止了工作。

Any input would be appreciated. 任何输入将不胜感激。 Thanks. 谢谢。

Not sure why your loop didn't work, this works just fine: 不知道为什么循环不起作用,这很好用:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM