У меня возникли проблемы с данными рукопожатия в моем приложении angularjs/ionic, когда я снова подключу пользователя к моей викторине socket.io.Обновление данных сокета co.io при использовании угловой фабрики
Я хотел бы обновить данные рукопожатия, которые я отправляю от клиента при подключении к моему серверу, если пользователь отключается, а затем снова подключается. (мне нужно некоторые данные в рукопожатии, поскольку сервер проверяет, если пользователь присоединяется в первый раз, или просто потерял свою связь с викториной)
Моей проблемой/Что происходит сейчас:
- пользователь хочет присоединиться к викторине с идентификатором «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 для получения данных, но значение возвращаемого сокета не ожидает загрузки данных ... –