Добрый день!
Прошу помощи в понимании проектирования клиент-серверного приложения.
Сервер на nodejs, для соединения с клиентом используется socket IO, база данных MongoDB.
Мне необходимо авторизовать пользователя, после чего по ID получить данные с БД и после уже обрабатывать их на сервере.
Данные пользователя обрабатываются и изменяются с периодичностью раз в секунду.
Например
var io = require('socket.io').listen(server);
var timer;
io.on('connection', function (socket) {
console.log('подключился пользователь');
socket.on('disconnect', function () {
console.log('пользователь отключился');
});
socket.on('initGame', (id) => { player.GetPlayerData(id,socket);});
});
// работа с данными пользователя
function UpdatePlayerData(data){
setInterval(() => {
//обновление данных
}, 1000);
}
//получение данных с БД
function GetPlayerData(id, socket) {
Player.findOne({ id: id}, function (err, res) {
if (err) throw err;
UpdatePlayerData(data);
});
}
Я понимаю как это будет работать с одним пользователем, но вот как работать с более чем одним.
Мои предположения:
при соединении добавлять сокет и данные для обработки в массив и раз в секунду производить перебор по этому массиву изменяя данные.
точно также и осуществлять рассылку данных клиенту.
Не могу сформировать в голове,как это должно выглядеть.
И еще смущает
setInterval(func(),time), который не гарантирует повторение за установленное время. Как можно обрабатывать данные еще?
Заранее спасибо.