在事件上的socket.on中输入两次

时间:2019-01-14 23:45:53

标签: node.js angularjs

我是Angular和Node.js的新手。 我的代码执行一个socket.emit到服务器端的函数,并在socket.on事件(“ listartists”)中接收响应。 不幸的是,他在这次比赛中两次进入比赛,我不明白为什么。 在服务器端(app.js),我放置了日志,并且一次正确调用了该函数,但随后两次通过了socket.on('listartists')。

谢谢大家

var appAng = angular.module('appAng', []).controller('myCtrl', function($scope) {
  socket.on('listartists', function(msg) {  
    // !!! enter twice this part of the code
    var ClientMessage = JSON.parse(msg);
    if (ClientMessage.ClientID == GetClientUniqueId()) {                
      var artistslist = JSON.parse(ClientMessage.Message);            
      $scope.$apply(function() {        
        var artistslist=JSON.parse(ClientMessage.Message);
        $scope.artists = artistslist;      
      }); 
    }   
  });
});

1 个答案:

答案 0 :(得分:0)

我将代码修改为:

socket.on('listartists', function(msg){  
var ClientMessage=JSON.parse(msg);
if (ClientMessage.ClientID== GetClientUniqueId())
{
    console.log("Arriva Lista Artisti " + ClientMessage.ClientID);
    var artistslist =JSON.parse(ClientMessage.Message);
    $scope.artists = artistslist; 
    $scope.$apply( function(){}); 

}
});

无论如何,如果我删除$ scope。$ apply(function(){}); socket.on事件仅被调用一次, 否则它会从那里经过两次。 我认为问题是SCOPE的管理有些想法吗?