У меня есть служба, которая соединяющую своих клиентов к серверу Socket.io:Angular.js: Как я могу избежать кеширования?
var serviceSocketIo = angular.module('myApp.services', []);
serviceSocketIo.factory('mySocket',['$rootScope', '$routeParams', function ($rootScope, $routeParams) {
var base = $rootScope.base, //base = 'http://localhost:3000'
channel = '/' + $routeParams.game,
url = base + channel,
mySocket;
console.log('service: connection to ' + url);
mySocket = io.connect(url);
return {
base: base,
channel: channel,
socket: mySocket,
on: function (eventName, callback) {
mySocket.on(eventName, function() {
var args = arguments;
$rootScope.$apply(function() {
callback.apply(mySocket, args);
});
});
},
emit: function (eventName, data, callback) {
mySocket.emit(eventName, data, function() {
var args = arguments;
$rootScope.$apply(function() {
if (callback) {
callback.apply(mySocket, args);
}
});
})
}
};
}]);
Пожалуйста, обратите внимание, что пространство имен зависит от $ routePrams PARAMATERS.
Что мне нужно - это удалить службу из кеша, прежде чем ее инициировать. Поэтому я буду уверен, что службы свяжут клиентов с правильным URL-адресом. Или, если есть другой способ заставить мой сервис проверить параметры?
Я боюсь, что это решение не может мне помочь, позволь мне объяснить более мою проблему: Я инъекционный мою службу до двух дифферентов контроллеров, так что когда я присоединяюсь к маршруту по отношению, например, к первому контроллеру, конечно, моя служба связывает меня с пространством имен относительно этого маршрута, но если я изменю маршрут, моя служба все еще связывает меня с тем же маршрутом. и это потому, что, как вы сказали, методы services/factory запускаются только один раз, поэтому они кэшируются. И я не знаю, как я могу избежать такого поведения. – hamou92