1

我有一个 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();
      })
 });
4

0 回答 0