gpt4 book ai didi

sockets - 使用什么来代替socket.removeAllListeners();在客户端

转载 作者:行者123 更新时间:2023-12-02 18:43:44 24 4
gpt4 key购买 nike

我遇到了与 Improve this AngularJS factory to use with socket.io 类似的问题但接受的答案似乎使用了一个不再存在的函数,所以如果我需要删除监听器,在 angular.js Controller 的客户端,可以用什么替代 socket.removeAllListeners(); ?我正在使用 socket.io v .9.16

最佳答案

socket.removeAllListeners() 仍然存在。无法调用的原因是,真正的socket是这个:var socket = io.connect()

下面代码中的“socket”是Angular Factory返回的一个包装器,它只有两个方法:onemit

$scope.$on('$destroy', function (event) {
socket.removeAllListeners();
// or something like
// socket.removeListener(this);
});

您可以做的就是向 socket 工厂添加新的 getSocket 方法,如下所示:

app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
// ...
},
emit: function (eventName, data, callback) {
// ...
},
getSocket: function() {
return socket;
}
};
});

然后你可以这样做:

$scope.$on('$destroy', function (event) {
socket.getSocket().removeAllListeners();
// or something like
// socket.getSocket().removeListener(this);
});

关于sockets - 使用什么来代替socket.removeAllListeners();在客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21008087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com