android - 如何在firebase实时数据库的单个节点上按顺序从多个设备写入数据?
问题描述
我有一个使用 firebase realtime 的聊天模块,我正在使用 push() 将数据写入节点。我正在尝试按顺序推送数据,但不知何故它不起作用。我有两个设备,两个设备都具有相同的时区,系统会自动拾取。
我尝试通过从设备获取时间戳来推送数据,但毫秒差异很小,所以它不起作用。我还尝试了 firebase 提供的 push() 方法
messageDatabase = firebaseDatabase.getReference(FIREBASE_CHAT).child(firebaseId)
messageDatabase.push().setValue(chatMessageItem)
我希望消息在发送时应该是有序的,就像任何社交消息应用程序一样,无论它是从两个或多个设备发送的。
解决方案
您应该必须使用firebase 事务在单个节点上进行多项操作。
每当您在数据库上使用事务时,您都会牺牲一些可伸缩性以获得更强大的数据一致性保证。Firebase 数据库上的事务没有什么不同,除了开发人员可能倾向于在更高并发的情况下使用 Firebase。
对于任何事务系统:保持系统可扩展性的关键是尽量减少争用更新相同数据的客户端数量。对于 Firebase,您可以通过在 JSON 树中尽可能低地运行事务来实现这一点。即计数器是可以在事务下正常工作的示例。
推荐阅读
- reactjs - 如何禁用 React 中导入另一个组件的按钮?
- python - 使用 OpenCV 检测网格纸上线条较粗的最大矩形
- python - 为什么我的程序没有打印所有的可能性
- java - gradle java 应用程序的 Proguard 示例
- javascript - 如何将对象重组为特定格式的对象数组?
- sql - SQL Developer 中的表列长度为 100 但视图列长度为 150
- python - 永远不会实例化的类上的类方法的 Python 编码标准是什么?
- java - 为什么通过 stream() 调用比使用 if 子句更耗时?
- react-native - 文本内联 TouchableOpacity React Native
- javascript - 嵌入 discord.js 中的图像/GIF