Вы можете использовать FirebaseAuth
, чтобы записать значение в базу данных, если авторизация вернет, что кто-то использует приложение, напишите ссылку и продолжайте добавлять пользователей в нее.
Я имею в виду, если естьесли пользователь в сети, FirebaseAuth
запишет ссылку на usersonline
со значением 1, если другой пользователь присоединится, это будет usersonline + 1
и т. д., а затем вы можете прикрепить onChildEventListener
и обновить в режиме реального временипользователи в сети с onChildChanged
, поэтому каждый раз, когда дочерний элемент изменяется (увеличивается в зависимости от пользователей), он будет отображать пользователей в сети.
Чтобы уменьшить количество пользователей в сети, после того, как они выйдут из системы, а AuthListener
будетбольше не видя вошедшего в систему пользователя, вы можете уменьшать значение только на 1 каждый раз, когда пользователь выходит из системы, поэтому, если пользователь выходит из системы, запускается AuthListener, и вы можете изменять своего ребенка с помощью usersonline - 1
каждый раз, когда это происходит.
Например, Firebase удается записать данные в базу данных, когда пользователь теряет соединение.
// Write a string when this client loses connection
presenceRef.onDisconnect().setValue("I disconnected!");
Вы можете проверить это в автономном режиме:
https://firebase.google.com/docs/database/android/offline-capabilities
Таким образом, вместо того, чтобы писать («я отключился!»), Вам нужно уменьшить значение ссылки на пользователя на 1, так что вы будете добавлять людей и удалять их из этого ребенка, как пользователи в режиме реального времени.
Этот фрагмент этого документа действительно хорош для достижения того, что вы ищете
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected"); // tell your usersonline ref to increment by 1
} else {
System.out.println("not connected"); //then if the user is not longer connected just decrement your usersonline by 1
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
С точки зрения одновременных подключений, это для базы данных реального времени Firebase:
Предел плана Spark равен 100 и не может быть увеличен.Планы Flame и Blaze имеют ограничение в 100 000 одновременных подключений к базе данных.Если вам нужно более 100 000 одновременных подключений, обратитесь в службу поддержки Firebase.
https://firebase.google.com/docs/firestore/quotas для Firestore, 100k - это ограничение для одновременных подключений в данный момент, это только длябета период .