Angularjs 如何使socket.io在控制器/视图更改时侦听事件(angular js)

Angularjs 如何使socket.io在控制器/视图更改时侦听事件(angular js),angularjs,socket.io,Angularjs,Socket.io,这是我的控制器 angular .module('hoApp') .controller('adminmapCtrl', adminmapCtrl); function adminmapCtrl ($scope,socket) { $scope.positions = []; socket.on('client', function(data) { $scope.$apply(function(){ $scope.client = data;

这是我的控制器

angular
.module('hoApp')
.controller('adminmapCtrl', adminmapCtrl);

function adminmapCtrl ($scope,socket) {
    $scope.positions = []; 
    socket.on('client', function(data) {
      $scope.$apply(function(){
        $scope.client = data;
      });
    });

    socket.on('positions', function(data) {
        $scope.$apply(function(){
            $scope.positions.push(data);
        });
    });

}
我的问题是,一旦我更改控制器/视图套接字。io停止侦听事件,我希望套接字继续侦听事件,以便在我返回控制器/视图时可以获取位置和客户端的新值

  angular
    .module('hoApp')
    .factory('socket', socket);

  function socket ($rootScope) {
      var socket = io.connect('http://127.0.0.1:3000');
      return {
        on: function(eventName, callback){
          socket.on(eventName, callback);
        },
        emit: function(eventName, data) {
          socket.emit(eventName, data);
        }
      };
  }

这是我的socket服务

你能发布你的socket服务的代码吗?这是我的socket服务我对代码做了更改,请有人给我一个解决方案。