【问题标题】:Easily create multiple socket.io events in node.js在 node.js 中轻松创建多个 socket.io 事件
【发布时间】:2013-05-14 06:26:19
【问题描述】:

只是一个关于优化和 DRY 的快速问题。我有我的节点服务器,一切正常,但我想知道如何为未来的开发人员清理。我有一组事件被分配如下:

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 循环的简单数组,但事件停止工作。

任何意见将不胜感激。 谢谢。

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    不知道为什么你的循环不起作用,这很好用:

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

    【讨论】:

    • 嗨罗伯特,我会试试你的版本并报告。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多