我正在尝试在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文件中获取动态值。因此,发出事件名称可以是动态的。
请告诉我,建议我解决一下。
答案 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
}
}