В ответ на Jankapunkt приведенный выше код находится на стороне клиента, но у меня все еще включена «автопубликация», так что это не должно быть проблемой.
В ответ на Jimish Gamit, спасибо за информацию. Это действительно похоже на ошибку Chrome. Я попробовал окно оповещения, которое, похоже, не помогло.
window.addEventListener('beforeunload', function (e) {
Games.update({_id : myGuy},{$set:{active : 0}});
e.preventDefault();
return "alert"
})
В качестве обходного пути я только что создал пользовательский компонент рамки, который создает ключ, который может сбросить игроков в неактивное состояние, когда это необходимо, что, я думаю, является лучшим из возможных.
AFRAME.registerComponent('reset', {
init: function() {
document.addEventListener('keydown', (event) => {
const keyName = event.key;
if (keyName === 'r') {
if (Games.findOne()) {
var playerId1 = Games.findOne({name: "player1"})._id;
var playerId2 = Games.findOne({name: "player2"})._id;
Games.update({_id : playerId1},{$set:{active : 0}});
Games.update({_id : playerId2},{$set:{active : 0}});
}
}
})
}
})