如何在Node.js中发出事件名称是动态的?

时间:2014-12-17 20:22:32

标签: html node.js dynamic emit

我正在尝试在Node.js中创建动态EventEmitter。那么,事件名称如何是动态的。

代码:

var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
num = "1";
fs = require('fs');

 server.listen(4000);

       function handler(req,res){
          fs.readFile(__dirname  + '/index.html',
          function(err,data){
           res.writeHead(500);
           res.end(data);
         });
       }

    app.get('/', function(req, res){
           res.sendfile(__dirname + '/index.html');
    });

    io.sockets.on('connection', function(socket){

         socket.on('send message'+num, function(data){

         io.sockets.emit('new message'+num, data);
    }); 
 });
现在,在这个例子中,我已经给出了价值" 1"但我希望它是动态的,所以我怎样才能从html文件中获取动态值。因此,发出事件名称可以是动态的。

请告诉我,建议我解决一下。

1 个答案:

答案 0 :(得分:3)

很少有正当理由使用动态创建的消息名称,这会严重影响那些试图收听这些消息的人的生活(他们可能不知道要侦听的消息名称)。使用一个消息名称,然后将该号码放在与消息一起的数据结构中。

发送:

io.sockets.emit('new-message', {data: data, item: num});

接收:

socket.on('new-message', function(msgData){
    if (msgData.item === xx) {
        // handle just a particular message number here
    }
}