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