2014-11-03 67 views
0

我正在測驗應用程序。我有一個bug讓我現在忙了4個小時。 我想在我的應用程序中使用socketIO。玩家可以將他們的答案發布給測驗大師。測驗大師可以在他的個人頁面上查看他們。問題是,當我作爲玩家提交答案時,測驗主方的socket.on()會觸發兩次。雙socketIO事件錯誤

從數據庫中獲取的答案,然後從插座(我認爲這是問題的所在):

$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); 
          }); 
         }); 

控制檯輸出

console output

回答

5

每次運行$http.get,你'添加此事件處理程序的新副本:

socketIO.on('answerSend', function (object) ... 

因此,運行兩次後,您將擁有雙重事件處理程序。運行三次後,三重事件處理程序等。您需要確保只添加一次事件處理程序。

我不知道你的代碼的整體結構,但我想你想在http響應代碼之外添加事件處理程序,所以它只是添加一次。

+1

你先生讓我的一天:D – JoeriSmits 2014-11-04 00:14:44