Один из способов определить, что пользователь вышел из игры, - обработчик Firebase onDisconnect
. С помощью этого вызова вы регистрируете операцию записи в базу данных, которая выполняется, когда сервер обнаруживает, что клиент ушел.
Сервер может обнаружить это двумя способами:
- Есликлиент отключается корректно, он отправляет сообщение серверу, который он отключает, и сервер сразу запускает обработчики отключения для этого клиента.
- Если клиент отключается другим способом, сервер обнаружит, что клиентпрошло, когда время ожидания сокета истекло, что может занять несколько минут.
Так что в вашем случае вы можете использовать обработчик onDisconnect
, чтобы либо удалить игрока из игры, либо пометить его как "ушел ".
Единственная проблема с этим подходом состоит в том, что грязные разъединения могут занять несколько минут, что может быть слишком длинным для вашего сценария.
Альтернативой может быть наличиеклиент периодически записывает сообщение в базу данных, чтобы показать, что оно все еще здесь, например, lastUpdated
отметка времени.
Затем вы можете в любом коде, который считывает данные, использовать эту временную метку, чтобы обнаружить, если игрок еще недавно играл, и считать их «пропавшими» после определенного периода, который хорошо работает для вашегоигра. Этот код может затем удалить проигрыватель из базы данных.
Этот код может запускаться в компоненте на стороне сервера, если вы хотите, но в прошлом я также запускал этот тип кода на клиенте и затем использовал(на стороне сервера) правила безопасности, обеспечивающие удаление только тех пользователей, которые «ушли».