angularjs移除socketio监听

app.factory('socket', function($rootScope) {
    var socket = io.connect('http://192.168.220.25:3000');
    return {
        on: function(eventName, callback) {
            socket.addEventListener(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);
                    }
                });
            })
        },
        removeListener: function(eventName, callback) {
            socket.removeEventListener(eventName, function() {
                var args = arguments;
                $rootScope.$apply(function() {
                    callback.apply(socket, args);
                });
            })
        },
    };
});

angularjs的没办法移除socket,想问一下移除监听要怎么弄??

阅读 3.3k
1 个回答

removeListener的第二个参数 callback的句柄要求和addEventListener时候的句柄是同一个哟。。。

app.factory(xxx,xxxxxx){
    var socket = xxxxxx;
    var socketHander = function(){
        var args = arguments;
        $rootScope.xxxxxx //balabalabala
        xxxxxxx;
    };
    return {
        on: function(xxxxxxx){
            socket.addEventListener("xxxxxx",socketHander);
        }
        remove: function(xxxxxxx){
            socket.removeEventListener("xxxxxx",socketHander);
        }
    }
    
}

p.s. 以后代码别贴图。。。直接上代码,否则谁高兴给你一句句打出来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题