Sockets 使用什么代替套接字。removeAllListeners();在客户端
我遇到了一个与类似的问题,但公认的答案似乎使用了一个不再存在的函数,那么用什么来代替Sockets 使用什么代替套接字。removeAllListeners();在客户端,sockets,angularjs,socket.io,Sockets,Angularjs,Socket.io,我遇到了一个与类似的问题,但公认的答案似乎使用了一个不再存在的函数,那么用什么来代替socket.removeAllListeners()?我正在使用socket.io v.9.16socket.removeAllListeners()仍然存在。无法调用它的原因是真正的套接字是这样的:var socket=io.connect() 以下代码中的“套接字”是angular factory返回的包装,它只有两种方法:on和emit $scope.$on('$destroy', function (e
socket.removeAllListeners()如果需要删除侦听器,请在angular.js控制器的客户端上执行代码>?我正在使用socket.io v.9.16socket.removeAllListeners()
仍然存在。无法调用它的原因是真正的套接字是这样的:var socket=io.connect()
以下代码中的“套接字”是angular factory返回的包装,它只有两种方法:on
和emit
$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);
});
然后你可以这样做:
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);
});
如果要将代码保留在服务本身中,实际上可以将其添加到要返回的对象中:
removeAllListeners: function() {
socket.removeAllListeners();
}
然后在控制器中,只需调用socket.removeAllListeners()代码>非常感谢,我仍然习惯于使用包装器函数。