【发布时间】:2014-03-07 16:40:22
【问题描述】:
更新
现在方法socket.disconnect(close) has been included in angular-socket-io。它有一个布尔参数'close',如果为真,也关闭底层连接。
我正在使用 btford/angular-socket-io
断开客户端的正确方法是什么?
我正在尝试实现以下场景
- 用户登录 --> 连接到套接字
- 用户注销 --> 从套接字断开
- 重复 (1) (2)
我成功实现了连接 (1),但我在断开连接时遇到了问题 (2)
这是我尝试过的:在我的身份验证服务中,我有以下内容
factory('AuthenticationService', function(socketFactory) {
var mySocket;
var service = {
//...
login: function(credentials) {
var login = $http.post('/login', credentials);
return login.then(function(response) {
service.currentUser = response.data.user;
if ( service.isAuthenticated() ) {
// **connect to socket on login**
mySocket = socketFactory({ioSocket: io.connect('http://localhost')});
}
return service.isAuthenticated();
});
},
logout: function(redirectTo) {
var logout = $http.get('/logout');
logout.success(function() {
service.currentUser = null;
mySocket.disconnect(); // **disconnect on logout (not working)**
redirect(redirectTo);
});
return logout;
},
//...
};
return service;
})
mySocket.disconnect();
给出以下错误
TypeError: Object # has no method 'disconnect'
mySocket.disconnect() 可以代替
mySocket = socketFactory({ioSocket: io.connect('http://localhost')});
我用
mySocket = io.connect('http://localhost');
【问题讨论】:
标签: javascript angularjs socket.io