首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带桶的FIrestore聊天室

带桶的FIrestore聊天室
EN

Stack Overflow用户
提问于 2021-03-11 07:06:54
回答 1查看 83关注 0票数 0

首先,我想补充一点,虽然这是一个Firestore问题,但我愿意听取关于集成额外的Google服务的建议。

系统

我的应用程序中有一个聊天功能。由于可能有一个非常不错的规模,我决定限制一个聊天组。聊天组不是由用户创建的,应该使用某种递增索引(例如: room_1、room_2、.、room_n)自动创建。

每个聊天组的限制最多是100个用户。因此,如果我有100 k用户在线,我希望有1k组(又名n=1000)。

The Issues

  1. 在登录后,我如何将用户分发给聊天组?(让我们说,策略是先填满当前的房间,因此标题中的“水桶”)
  2. 由于用户可以在不按“退出”或其他什么的情况下关闭应用程序,所以我需要系统知道以进行调整。
EN

回答 1

Stack Overflow用户

发布于 2021-03-11 16:12:38

您可以在房间文档中添加一个计数器,并由FieldValue.increment使用它的增量/递减,以下是Javascript中的一个使用示例:

代码语言:javascript
复制
//when a user enter the room
db.collection('chat_rooms').doc('room_1').update({
    userCount: firebase.firestore.FieldValue.increment(1)
});
//when a user quits the room
db.collection('chat_rooms').doc('room_1').update({
    userCount: firebase.firestore.FieldValue.increment(-1)
});

由于FieldValue.increment()获得了计数器的当前值,您不需要担心赛车条件,这是很好的考虑,因为您希望有大量的用户,所以这将是不断更新。

你可以把这个包裹在房间柜台的检查上,如果房间超出了你为房间设置的用户的限制,一个新的房间可以开始被填满。

对于第二个问题,需要提供更多的信息,但假设您使用的是安卓系统,则可以在本社区回答中提供的示例中使用社区回答函数来调用更新,如果应用程序被用户背景接地或关闭,该更新会减少聊天室文档中的计数器,作为“强迫”用户离开聊天室的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66577857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档