4

クライアント接続ごとに、socket.io を使用してすべてのクライアント インスタンスにいくつかの属性を設定する必要があるチャット アプリを構築しています。属性を保存するときは、次を使用します。

client.set('name', name, function () {});
client.set('email', email, function () {});
....

そしてそれはうまくいきます。すべてのクライアント プロパティを取得する必要がある場合、これよりも良い方法は見つかりませんでした。

client.get("name",function(err,name) {
    client.get("email",function(err,email) {
       .......
    }
}

非同期でデータを取得するには、すべての「get」をネストする必要があります。しかし、取得するプロパティが 10 個ある場合、10 個のアイテムすべてをネストする必要がありますか? それを行うためのより良い方法があるに違いありません、誰かが私を助けることができますか?

4

1 に答える 1

2

ソケットに属性を付けません。

 io.sockets.on('connection', function(socket) {
  var username = "xx";
  var email = "xx";

  socket.on('doX', function(data) {
    socket.emit('ackX', {username: username, email: email});
  });
});

それが最善の解決策かどうかはわかりませんが、そのような例はたくさん見てきました。

EDIT : socket.io - ソケットに複数のフィールドを取得していますか? 正しい答えはあなたのニーズに合うかもしれません

于 2013-05-15T08:33:02.927 に答える