在线聊天中的实时用户数

时间:2018-11-06 21:26:06

标签: swift firebase firebase-realtime-database

我正在尝试制作一个群聊应用,我想实现一项功能,该功能可以检测聊天室中的活跃用户数。我正在考虑使用viewWillAppear和viewWillDisappear函数中的以下结构更新数据库。例如,在viewWillAppear中,我将当前用户值更新到聊天室节点中,而在viewWillDisappear中,我将删除用户值。但是,我想知道这是否是解决此问题的最有效方法,因为这将需要大量数据库提取。

active_chatroom_users
    - chatroomId
         - UserId:1
         - UserId:1

1 个答案:

答案 0 :(得分:0)

首先,您可能不想使用viewWill...,因为它并不总是意味着将出现以下viewDid...。而是使用viewDidAppearviewDidDisappear。每次视图出现和消失时,在聊天室中创建和删除用户都是没有问题的,但是,您认为在获取聊天室用户数时是正确的。

每次添加或从active_chatroom_users中删除用户时,您应该通过递增和递减来保持计数。可以通过几种方式在客户端上完成此操作,其中一种涉及事务。它将允许您实时更新活动用户数,并确保同时计数同时处于活动状态的任何其他用户。

但是,我更喜欢使用Cloud Function触发器来识别用户何时在聊天室中变得活跃或不活跃,并增加或减少聊天室的活跃用户总数。