1
当我将用户重新连接到我的socket.io测验应用程序时,我在我的angularjs/ionic应用程序中握手数据时遇到了一些问题。使用角度工厂时更新socket.io握手数据
我想更新我连接到服务器时从客户端发送的握手数据,如果用户断开连接并再次连接。 (我需要一些数据在握手,因为服务器检查用户是否加盟的第一次,或者只是失去了连接测验)
我的问题/现在发生了什么:
- 用户想加入竞猜ID为“12345”
- 将用户连接到我的服务器,发送握手数据:
{user_id: 1, quiz_code: 12345}
- 服务器然后将用户“1”竞猜号码“12345”
- 测验结束后,用户使用io.disconnect()并离开测验
- 用户现在决定加入测验“66666”
- 现在套接字工厂似乎记住了旧的握手。
- 因此,当客户端连接到它发送
{user_id: 1, quiz_code: 12345}
,但应该有服务器发送{user_id: 1, quiz_code: 66666}
我angular.js控制器
.controller('QuizCtrl', function(SocketService) {
$scope.$on('$ionicView.enter', function(e) {
//this seems to be the problem -> it reuses the old data in the factory
SocketService.connect();
});
$scope.$on('$ionicView.leave', function(e) {
SocketService.removeListener();
SocketService.disconnect();
});
});
我angular.js套接字工厂
.factory('SocketService', function(socketFactory){
var data = {
activeQuiz : {quiz_code: 12345, quiz_ip: some.ip},
currentUser : {user_id: 1}
};
//This data is loaded from localStorage in the application, so it can be changed
var myIoSocket = io.connect(data.activeQuiz.ip, {query: 'user_id='+data.currentUser.user_id+'&quiz_code='+data.activeQuiz.quiz_code});
mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
})
所以3个问题ns:
- 我知道工厂是单身人士,但我可以更新我工厂的数据吗?
- 当用户进入控制器时,可以将工厂“重新注入”我的控制器或“重置”工厂。
- 有没有更好的方法来做到这一点?
谢谢!正是我所需要的... – OngoBoingo
如果我想要使用数据库中的数据插入查询参数?我使用$ http.get来获取数据,但套接字返回值没有等待数据被加载... –