Angulars JS Btford library, NodeJS Socket.io

I m actually facing a problem while developping my chat application between angularjs (BTFord library) and NodeJS Socket.IO...

In fact, I need a user A to send a message to a user B. - If I log the message in node, it works perfectly, and it's sent only one time. - In angular js the event on("message") is called 3 or 4 times, and I had the message to send 3 or 4 times

It's a problem for me ... I need to receive the message only one time. Is there any problem with this ?

Thanks for advance

Events handlers are not destroyed when switching/reloading controllers. So you may have subscribed multiples times to your event.

See the docs : https://github.com/btford/angular-socket-io#socketremovelistener

Can you try this :

angular.module('Foo').controller('BarCtrl', function ($scope, socket) {

  socket.on('message', function (msg) {
     // ... do something
  });

  $scope.$on('$destroy', function() {
    socket.removeListener('message');
  });

});

I had a similar situation, it ends up that the controller was executing more than once, so be aware of that, check if it's running more than once using a message with console.log, beign said that probably you are registering several listeners on the client side to avoid that put a condition in your client: (let's asume that you are registering the events on $rootscope)

if( $rootScope.$$listeners['socket:someListener']===null || $rootScope.$$listeners['socket:someListener']===undefined){
    $rootScope.$on('socket:someListener', function(ev, data){
        //Client code
    }
}

that will register your listener only once! cheers!