Android 上次出现在聊天应用程序中的替代实现
我将用附图描述我的用例,以及我所能做的一切,以便我们能有一个更好的想法 总体思路:Android 上次出现在聊天应用程序中的替代实现,android,firebase,sockets,flutter,websocket,Android,Firebase,Sockets,Flutter,Websocket,我将用附图描述我的用例,以及我所能做的一切,以便我们能有一个更好的想法 总体思路: Whatsapp聊天应用程序与firebase 用例: 正如我们所知,whatsapp的其中一个功能是用户最后一次看到的功能(退出应用程序、注销、失去wifi连接等) 我尝试使用: onDisconnect,但onDisconnect在失去wifi连接时会产生不好的结果(因为套接字延迟将超时) 我现在使用的是,当用户失去连接时,每个用户每3秒更新一次时间戳(每3秒更新一次文档), 他将无法更新他的时间戳,对
- Whatsapp聊天应用程序与firebase 用例: 正如我们所知,whatsapp的其中一个功能是用户最后一次看到的功能(退出应用程序、注销、失去wifi连接等) 我尝试使用:
- onDisconnect,但onDisconnect在失去wifi连接时会产生不好的结果(因为套接字延迟将超时)
- 我现在使用的是,当用户失去连接时,每个用户每3秒更新一次时间戳(每3秒更新一次文档), 他将无法更新他的时间戳,对吗?因此,如果另一个用户想要与这个离线用户聊天,我可以向他显示该用户最后一次看到的信息。希望如此 这很清楚
- 使用颤振框架开发
- Redux用于管理应用程序状态
- Firebase,云firestore
timer = Timer.periodic(Duration(seconds: 3), (Timer t) {
// store.dispatch(updateUserOnline());
});
正如您可以在下图中看到的,我的数据结构显示了我是如何每3秒更新此用户最后一次看到的
如果我们有100万用户,并且这100万用户正在更新他们的应用程序,那么对于一个用户来说,要获得令人满意的结果,这种实现是非常昂贵的
最后一次看到它是每3秒一次,每月要花很多美元,因为我们正在做一个写操作,不是吗
因此,我的另一个解决方案是实现到我自己的服务器的套接字连接,并让所有用户在我的服务器上而不是在Firebase服务器上侦听onDisconnect套接字事件,这是否可以避免编写操作的巨大成本
附图:Firebase写操作的成本确实要高一点,因为您将发送大量的写操作,这些显然只是为了“最后一次看到”的工作 相反,正如您所提到的,与您自己的服务器建立套接字连接将有助于减少查询数量。i、 e.一旦套接字与服务器断开连接,您就可以向Firebase发送写入操作。“仅当用户断开连接时,每3秒一次” 另外(不是您要求的),如果您要设置自己的套接字服务器,那么它在以下场景中也会有所帮助:
- 键入事件(当其他人键入消息时,我们得到的指示)
- 快速了解另一端的人是否在线/离线的方法(因为插座)