当工厂中的套接字连接发生更改时,Angularjs socket.on事件无法正常工作

时间:2015-03-16 18:53:03

标签: angularjs socket.io factory rootscope

我有一个socket.io的工厂,如果用户没有登录,那么我有

var socket = io.connect(SOCKET_URL);

当用户登录网站时,我正在更改套接字值。

socket = io.connect(SOCKET_URL, {forceNew: true});

在我的控制器中我有

socket.on('notification', function(data){console.log(data);})

在更改工厂中的套接字变量后,此socket.on('notification')无效。

我的工厂

app.factory('socket', function($rootScope){
     var socket = io.connect(SOCKET_URL);
     return {
      reconnect:function(){
          console.log("reconnect");
          socket = io.connect(SOCKET_URL, {forceNew: true});
       },
      on: function (eventName, callback) {
         socket.on(eventName, function () {
             var args = arguments;
             $rootScope.$apply(function () {
                callback.apply(socket, args);
             });
         });
    }
});

我的控制器

 app.controller('myCtrl1', function($scope, socket){
      $scope.login = function(){
            // .............
            socket.reconnect();
      }
 });


 app.controller('myCtrl2', function($scope, socket){
      socket.on('notification', function(data){ // this is not working 
          console.log(data);                  //after calling socket.reconnect();
      })
 });

0 个答案:

没有答案