Angularjs observando los cambios de las raíces.

Estoy intentando enlazar con rootscope para poder establecer la presencia en un servidor diferente cuando el usuario inicia sesión. Aquí está mi módulo.

angular.module('presence', 
  [
  ]
)

.run(function ($rootScope) {
  $rootScope.$watch($rootScope.currentUser, function () {
    console.log('change currentUser')
    console.log($rootScope.currentUser)
    presence.setGlobal({
      u: $rootScope.currentUser,
      s: 'on'
    })
  })
})

No hay controlador porque se trata solo de la presencia global del usuario y no tiene nada que ver con el DOM.

Esto no funciona, el reloj se ejecuta una vez, pero nunca más en los cambios posteriores. Gracias por tu ayuda.

Editar: El código de inicio de sesión se ve así:

  $scope.login = function() {
    $http.post('http://localhost:3000/login', $scope.user).success(function(res, status) {
      if (res && res._id) {
        $rootScope.currentUser = res
      }
    }).error(function(res, status) {
      $scope.error = res.err
    });
  };

Este código se actualiza bien en el DOM. Muestra el nombre de usuario en el HTML por ejemplo:

a.user(ui-if="currentUser", ng-href="/user/{{currentUser._id}}") {{currentUser.username}}

Respuestas a la pregunta(2)

Su respuesta a la pregunta