he construido un simple juego de varios jugadores matemáticas en tiempo real de meteoros que se puede probar aquí: http://mathplay.meteor.comLos clientes del juego multijugador de Meteor no se sincronizan. ¿Cómo depurar?
Al reproducir localmente (usando diferentes navegadores), todo funciona bien. Pero cuando juego en Internet con amigos, los clientes a menudo no se sincronizan: una pregunta que aparece como activa para un jugador en realidad ya está resuelta por otro jugador.
Supongo que algún código que debería ser de solo servidor se ejecuta en uno de los clientes. ¿Alguna sugerencia sobre cómo depurar este comportamiento?
Esto es lo que ocurre en el cliente cuando el usuario envía una respuesta:
Template.number_input.events[okcancel_events('#answertextbox')] = make_okcancel_handler({
ok: function (text, event) {
question = Questions.findOne({ order_number: Session.get("current_question_order_number") });
if (question.answer == document.getElementById('answertextbox').value) {
console.log('True');
Questions.update(question._id, {$set: {text: question.text.substr(0, question.text.length - 1) + question.answer, player: Session.get("player_name")}});
callGetNewQuestion();
}
else {
console.log('False');
}
document.getElementById('answertextbox').value = "";
document.getElementById('answertextbox').focus();
}
});
callGetNewQuestion() desencadena esta en cliente y servidor:
getNewQuestion: function() {
var nr1 = Math.round(Math.random() * 100);
var nr2 = Math.round(Math.random() * 100);
question_string = nr1 + " + " + nr2 + " = ?";
question_answer = (nr1 + nr2);
current_order_number = Questions.find({}).count() + 1;
current_question_id = Questions.insert({ order_number: current_order_number, text: question_string, answer: question_answer });
return Questions.findOne({_id: current_question_id});//current_question_id;
},
código fuente completo está aquí por referencia: https://github.com/tomsoderlund/MathPlay
Estoy un poco sorprendido por la respuesta negativa a su pregunta. Aunque, se redacta más como una solicitud de revisión de código que como una pregunta específica. Debes venir al canal de meteoros IRC, apuesto a que alguien estará feliz de hablar sobre tu error. – lashleigh