2

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ファイルから動的な値を取得するにはどうすればよいですか。したがって、その発行イベント名は動的にすることができます。

教えてください、解決策を提案してください。

4

1 に答える 1

3

動的に作成されたメッセージ名を使用する正当な理由はめったになく、それらのメッセージをリッスンしようとする人の生活を深刻に複雑にします (リッスンするメッセージ名がわからない場合があります)。1 つのメッセージ名を使用し、その番号をメッセージに付随するデータ構造に入れます。

送信:

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
    }
}
于 2014-12-17T20:59:04.717 に答える