Aus*_*vis 4 sockets socket.io angularjs
我遇到了一个类似的问题来改进这个 AngularJS 工厂以与 socket.io 一起使用,但接受的答案似乎使用了一个不再存在的函数,所以socket.removeAllListeners();如果我需要删除一个监听器吗?我正在使用 socket.io v .9.16
socket.removeAllListeners()还在。之所以不能调用,是因为真正的socket是这个:var socket = io.connect().
下面代码中的“socket”是angular factory返回的一个包装器,它只有两个方法:on和emit。
$scope.$on('$destroy', function (event) {
socket.removeAllListeners();
// or something like
// socket.removeListener(this);
});
Run Code Online (Sandbox Code Playgroud)
您可以做的是getSocket向socket工厂添加一个新方法,如下所示:
app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
// ...
},
emit: function (eventName, data, callback) {
// ...
},
getSocket: function() {
return socket;
}
};
});
Run Code Online (Sandbox Code Playgroud)
然后你可以做这样的事情:
$scope.$on('$destroy', function (event) {
socket.getSocket().removeAllListeners();
// or something like
// socket.getSocket().removeListener(this);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9898 次 |
| 最近记录: |