相关疑难解决方法(0)

为什么每当我重新启动控制器时,我的socket.on调用都会成倍增加

我一直在使用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)

sockets socket.io angularjs

2
推荐指数
1
解决办法
1436
查看次数

标签 统计

angularjs ×1

socket.io ×1

sockets ×1