我有一项服务将我的客户端连接到 Socket.io 服务器:
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 参数。
我需要的是在实例化之前从缓存中删除服务。所以我会确保这些服务会将客户端连接到正确的 url。或者是否有其他方法可以强制我的服务检查参数?