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來獲取數據,但套接字返回值沒有等待數據被加載... –