我正在开发一个测验应用。我有一个让我忙碌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);
});
});
控制台输出
答案 0 :(得分:5)
每次运行$http.get
时,您都会添加此事件处理程序的新副本:
socketIO.on('answerSend', function (object) ...
因此,在运行两次后,您将拥有双事件处理程序。运行三次后,三重事件处理程序等等。您需要确保只添加一次事件处理程序。
我不知道您的代码的整体结构,但我猜您想在http响应代码之外添加事件处理程序,因此只需添加一次。