2

こんにちは、動的名前空間を使用してオンデマンドで作成しようとしています。何らかの理由で重複または複数のクライアントを取得することを除いて、機能しています

サーバ側 :

io.of("/" + group ).on("connection", function(socket_group) { 
                socket_group.groupId = group;
                socket_group.on("infos", function(){
                    console.log("on the group  !");
                })

                socket_group.on('list', function () {
                    Urls.find({'group' : '...'}).sort({ '_id' : -1 }).limit(10).exec(function(err, data){
                        socket_group.emit('links', data);
                    });
                })  
                [...]
                })

クライアント側 :

socket.emit('list', { ... });

クライアント側では 1 つのコマンドのみが送信されますが、サーバーは常に 2 つ以上の応答で応答しています。アプリを閉じたり開いたりするたびに、応答が増加します。

わかったらよろしくお願いします。

4

1 に答える 1

2

これは正しい動作である可能性があります。他の環境でイベント ハンドラーをスタックする場合と同様です。関数の名前空間へのアタッチを 1 回だけ実行するようにするには、最初にその存在を確認します (または、必要に応じて 1 回だけ実行されるようにプログラム内のどこかに定義します)。

条件を試す(!io.namespaces["/" + group])

于 2012-11-11T01:36:27.377 に答える