내가 공장 myApp.factory ('소켓'여기 여기왜 내가
http://www.html5rocks.com/en/tutorials/frameworks/angular-websockets/ 브라이언 포드가 여기에 설명 된 소켓 팩토리를한다 사용하고 내 컨트롤러 가운데로 할 때마다 내 socket.on이 다중 호출 할, 내가 수신 socket.on 기능은 한 번 실행 다른 페이지에서이 컨트롤러를 다시 입력 할 때마다 내가 수동으로 새로 고칠 때까지 기능 ($ rootScope는) {
var socket = io.connect('url');
return {
on: function (eventName, callback) {
socket.on(eventName, function() {
var args = arguments;
$rootScope.$apply(function() {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function() {
var args = arguments;
$rootScope.$apply(function() {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
});
내 컨트롤러의 초기화 함수에 socket.emit을 가지고.이 문제가 발생합니다 페이지를 1로 리셋합니다. 명시 적으로 저장하지 않습니다. 소켓 세션. 그래서 내 소켓을 일으키는 원인이 될 수 있습니다. 여러 번 전화를 걸 때.
여기 내 컨트롤러의 소켓 .emt입니다. 항상 한 번 실행됩니다. 여기
$scope.init = funciton(){
...
socket.emit('getSignedSlidesFromUrl', $scope.slideLocation);
}
'는 getSignedSlidesFromUrl'여기
socket.on('signedUrls', function (signedSlides){
console.log('signedUrls socket hit');
$scope.slides = signedSlides;
console.log($scope.slides[0]);
console.log($scope.display);
});
가 INIT 컨트롤러에서 컨트롤러
방출하려고 getSignedSlidesFromUrl 재진입 후의 내 콘솔 로그의 예를 받게되며 것이다 내 socket.on 인 .js : 71
display after called $scope.first slide is0 controllers.js:574
flash object is controllers.js:537
signedUrls socket hit controllers.js:816
0 controllers.js:823
signedUrls socket hit controllers.js:816
0 controllers.js:823
컨트롤러에 다시 내 로그 당신은 당신의 공장 removeAllListeners를 추가해야
signedUrls socket hit controllers.js:816
0 controllers.js:823
signedUrls socket hit controllers.js:816
0 controllers.js:823
signedUrls socket hit controllers.js:816
0 controllers.js:823
했다. 나를 안내 해줄 수 있니? 컨트롤러에 $ destory를 추가하고 소켓에 새로운 removeAllListeners() 메서드를 추가합니다. –