javascript - angularjs移除socketio监听

查看:158
本文介绍了javascript - 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,想问一下移除监听要怎么弄??

解决方案

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. 以后代码别贴图。。。直接上代码,否则谁高兴给你一句句打出来。

这篇关于javascript - angularjs移除socketio监听的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆