0

タイトルで述べたように、部屋ごとに異なる配列を定義したいと考えています。例えば:

room1の場合、配列はvar colors=['red','blue'],

room2の場合、配列は になりますvar colors=['black','white']。(同名で内容は異なります)

これが私の単純化されたサーバーです:

var io = require('socket.io').listen(3000).set('log level', 2);

io.sockets.on('connection', function (socket) {
    var room = socket.handshake.query.room;  // room1 -- ws://localhost:3000/?room=room1

    socket.join(r); // add client to 'room1' room.
    // var colors = ['yellow','green'];
    io.sockets.in(r).emit('m', colors);
}

if(h=='room1') { var colors=['a','b'];} elseif(room=='room2') { var colors=['y','z']; }部屋がたくさんあるので、私はそのようなものを望んでいません。

どうすればこれを達成できますか? ルームの代わりに名前空間を使用する必要がありますか?

4

1 に答える 1

1

次に、部屋の名前をキーとして、対応する配列を持つオブジェクトを用意します。次に、現在のルーム名を使用して、カラー リストからカラー配列を自動的に取得します。

var colorList = {
      'room1' : ['a','b'],
      'room2' : ['y','z']
    }
  , colors = colorList[room]
  ;
于 2013-03-03T19:28:39.577 に答える