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', { ... });

在客户端,仅发送一个命令,但服务器始终以 2 个或更多响应进行响应。每次我关闭/打开我的应用程序时,响应都会增加。

谢谢如果你发现。

4

1 回答 1

2

这可能是正确的行为;就像您要在任何其他环境中堆叠事件处理程序一样。为确保您只将函数附加到命名空间执行一次,请先检查它的存在(或在程序中的某个地方定义它,只根据需要运行一次)。

试试条件(!io.namespaces["/" + group])

于 2012-11-11T01:36:27.377 回答