我一直在使用brian ford这里描述的套接字工厂 http://www.html5rocks.com/en/tutorials/frameworks/angular-websockets/
这是工厂myApp.factory('socket',function($ 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);
}
});
})
}
};
});
Run Code Online (Sandbox Code Playgroud)
我的控制器初始化函数中有一个socket.emit,每当我从另一个页面重新进入该控制器时,接收socket.on函数执行+1次.这种情况发生在我手动刷新页面然后重置为1.我没有明确地将我的套接字存储在会话中.那么什么可能导致我的socket.on多次调用.
这是我的控制器中的socket.emt总是执行一次.
$scope.init = funciton (){
...
socket.emit('getSignedSlidesFromUrl', $scope.slideLocation);
}
Run Code Online (Sandbox Code Playgroud)
这是我的socket.on将收到'getSignedSlidesFromUrl'
socket.on('signedUrls', function (signedSlides){
console.log('signedUrls socket hit');
$scope.slides = …Run Code Online (Sandbox Code Playgroud)