双socketIO事件错误

Joe*_*its 0 javascript debugging node.js socket.io angularjs

我正在开发一个测验应用程序.我有一个让我忙碌4小时的小虫.我想在我的应用程序中使用socketIO.玩家可以将他们的答案发布到测验大师.测验大师可以在他的个人页面上查看它们.问题是,当我作为播放器提交答案时,测验主控方的socket.on()会触发两次.

从数据库中获取答案然后从socket中获取答案(我认为这就是问题所在):

 $http.get('/api/antwoorden/' + $scope.linkHash)
                        .success(function (data) {
                            $scope.answers = data.doc.ingezonden;
                            console.log("****GEZONDEN VAN DATABASE****", $scope.answers)
                            var i = 0;
                            socketIO.on('answerSend', function (object) {
                                i = i + 1;
                                console.log(i);
                                if(object.uitvoering === $scope.myCode) {
                                    $scope.answers.push(object.answer);
                                    console.log("***", object);
                                }
                                console.log("*****NU IS DIE DIT*****", $scope.answers);
                            });
                        });
Run Code Online (Sandbox Code Playgroud)

控制台输出

控制台输出

jfr*_*d00 5

每次运行时$http.get,您都要添加此事件处理程序的新副本:

socketIO.on('answerSend', function (object) ...
Run Code Online (Sandbox Code Playgroud)

因此,运行两次后,您将拥有双事件处理程序.运行三次后,三重事件处理程序等等.您需要确保只添加一次事件处理程序.

我不知道你的代码的整体结构,但我猜你想在http响应代码之外添加事件处理程序,所以它只添加一次.