Извините, что за неправильное название, но не удалось сделать его лучше. Итак, вот моя проблема: Я использую NodeJS и socket.IO. У меня есть система лобби для чего-то вроде игры. Вы создаете root, другие люди присоединяются и т. Д. Я хочу, чтобы владелец комнаты закрыл соединение, которое комната должна удалить сама. Я сделал это такСоединение NodeJS перед отключением
db.game.findOne({ _id: ObjectId(roomId) }, function(err, item)
{
if (err || !item || item.started)
return;
if (item.createdBy == currentUser)
{
db.game.remove({ _id: ObjectId(roomId) }, function(err, item) {
io.sockets.in(roomId).emit('force_interupt');
});
}
и он работает, но у меня есть вопрос. Если человек просто нажимает REFRESH в браузере, веб-сервер (php, nginx, mongod) сначала получает содержимое игры -> показывает его, и после этого игра была удалена NodeJS, потому что соединение потеряно. Любые идеи, как я могу избежать этого?
Каков наилучший способ отправить команду «выйти»? Я думал о onbeforeunload и onunload, но с onbeforeunload я могу получить возвращаемое значение подтверждения и с onunload. Я не могу остановить разгрузку. –
Я бы предложил использовать кнопку «quit» для команды «quit». На мой взгляд, обновление страницы ничем не отличается от закрытия, а затем повторного открытия страницы. Итак, если обновление не удаляет помещение, закрытие страницы также не должно выходить из комнаты. – Chen
Я понял, как это сделать, спасибо –