断开连接时 Firebase 更新

2023-12-31

我在 firebase 上有一个节点,列出了游戏中的所有玩家。当新玩家加入时,此列表将更新。当当前用户(我)断开连接时,我想将自己从列表中删除。

由于列表会随着时间的推移而变化,在我断开连接的那一刻,我想更新此列表并更新 firebase。

这是我正在考虑的方式,但它不起作用,因为 .update 不接受函数。只有对象。但是,如果我事先创建该对象,当 .onDisconnect 调用时,它将不是最新的对象......我应该如何去做呢?

payload.onDisconnect().update( () => {
            const withoutMe = state.roomObj
            const index = withoutMe.players.indexOf( state.userObj.name )
            if ( index > -1 ) {
                withoutMe.players.splice( index, 1 )
            }
            return withoutMe
        })

The onDisconnect处理程序是为此用例制作的。但它要求在设置写入操作时知道写入操作的数据onDisconnect。如果你仔细想想,这应该是有道理的:因为onDisconnect发生after你的客户端断线了,那次写操作的数据必须是已知的before断开连接。

听起来您正在构建一个所谓的状态系统:一个包含当前在线的每个用户的节点的列表。这Firebase 文档有一个此类存在系统的示例 https://firebase.google.com/docs/database/web/offline-capabilities#section-sample。与您的方法的主要区别在于,它在文档中每个用户仅修改自己的节点。

所以:当用户上线时,他们为自己编写一个节点。然后当它们断开连接时,该节点就会被删除。由于所有用户将其节点写入同一父节点下,因此该父节点将反映在线用户。

实际的实现有点复杂,因为它也处理一些边缘情况。因此,我建议您查看我链接的文档中的代码,并将其用作您自己的类似系统的基础。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

断开连接时 Firebase 更新 的相关文章

随机推荐

  • Android 中“FLAG_BLUR_BEHIND”的替代方案?

    我可以看到 当我使用 API 演示中所示的相同标志来模糊背景时 我收到一条警告 表明它已被弃用 字段 WindowManager LayoutParams FLAG BLUR BEHIND 已弃用 我读过相关内容 发现 不再支持模糊 这是否
  • 重新创建 Fabric.js 画布并导出为图像?

    我有一个画布 用户可以在其中使用另一个画布中的图像创建设计div他们点击 将其发送到 Fabric js 画布 并在其中移动等等 由于画布的大小是width 270 and height 519 比成品小 我需要用尺寸为的画布重新创建它wi
  • 使用 Apple Enterprise Developer Program 部署 iOS 应用程序

    我已经为我需要部署的公司创建了一个应用程序 该应用程序仅供内部使用 因此不会在 App Store 上提供 我是否需要为要在其设备上安装应用程序的每个人提供 UDID 这是不可能的 因为有 500 名员工 是否有人拥有有关仅使用企业开发人员
  • 指定 64 位对齐

    给定一个结构定义 例如 struct foo int a b c 指定它应始终与 64 位地址对齐的最佳 最简单 最可靠和可移植 方法是什么 即使在 32 位版本上也是如此 我正在使用 C 11 和 GCC 4 5 2 并希望也支持 Cla
  • 上传的图像在canvas中拖动,在html5中可触摸和旋转

    我是 Html5 的新手 我正在上传图像 但它没有显示在画布中 如果我提供图像的直接来源 那么它将起作用 我从此链接获取帮助javascript 上传图像文件并将其绘制到画布中 https stackoverflow com questio
  • 包含“点目录”时的 Path.relativize 行为

    About Path relativize你可以阅读的方法 此方法尝试构造一个相对路径 当 根据此路径解析 产生一个定位相同文件的路径 作为给定的路径 例如 在 UNIX 上 如果此路径是 a b 并且 给定路径是 a b c d 那么生成
  • 有没有办法更快地渲染点OpenGL

    我需要在 openGL 中可视化大约 50k 60k 点 我设法将它们全部打印出来 但是当我使用旋转时 每次旋转之间需要花费很多时间 因为它只是打印每一帧的所有数据 有没有办法一次性打印所有数据并冻结数据的导入 以便保留图像但停止处理 de
  • 如何检测本地存储何时被清除

    我在页面 A 中添加了本地存储中的一些值 当我转到页面 B 时 本地存储不应被清除 但确实如此 这是一个程序错误 但是 我无法正确跟踪它以了解这种情况何时发生 我尝试执行 setInterval 来每 1 秒在控制台中记录一次本地存储的值
  • Ctrl + A 和类似的选择操作快捷键在可视代码中不起作用

    Select all copy cut and paste are not working by using the usual keyboard shortcuts ctrl a c x or v 对于 VS Code 1 55 1 我通
  • 在 Angular 1 中,如何对 ng-repeats 进行分页?

    我目前使用过滤器将 ng repeat 限制为 5 但我想知道如何对数据进行分页 div 我有数量不定的重复项目 我希望用户能够以合理的块查看这些项目 一次五个 并使用下一个 上一个按钮或页码来跳过 是否有一个非常适合这项任务的角度指令 使
  • 出现错误 -java.lang.NoClassDefFoundError: javax/faces/component/behavior/ClientBehaviorHolder

    我在集成 SWF Primefaces 2 2 1 JSF 2 Spring Security 3 Spring 3 1 0 时遇到奇怪的错误 INFO Unsanitized stacktrace from failed start co
  • 了解 Python WSGI 应用程序中的全局对象持久性

    请考虑 Google App Engine 中我的 WebApp2 应用程序中的以下代码 count 0 class MyHandler webapp2 RequestHandler def get self global count co
  • 正则表达式删除重复单词?

    我用它来删除重复的单词 Notepad 或 Powergrep b w b W 1 用 来代替 1 如何更改以查找不连续的重复单词排成一行并删除第二个重复的单词 Example word1 word2 word1 word3 Result
  • 将四元数从右手坐标翻转到左手坐标

    我需要从右边翻转四元数 x left to right y front to back z top to bottom 到左手坐标 其中 x left to right y top to bottom z front to back 我该怎
  • unordered_set 将元素存储为指针

    缩小范围 我目前正在使用升压无序 http www boost org doc libs 1 49 0 doc html unordered html 我看到两种可能的解决方案 定义我自己的等式谓词和哈希函数 http www boost
  • VS2010不会显示项目属性(“底层RCW”)?

    只有有时 我还没有注意到模式 当我右键单击一个项目 各种类型的项目 并选择 特性 我通常可以在重新启动 VS2010 后查看项目页面 我用的是RTM版本 什么可能导致此错误 莱帕德英国 我遇到了同样的问题 最后发现出了什么问题 这是行为不当
  • 传单标记在某些情况下不显示

    我正在使用 leaflet htmlwidget 实现来使用 R 绘制基于 Web 的地图 我正在寻找特定的标记 但找不到它 并意识到它根本没有显示 但是 当我将数据集子集化为just该条目 标记显示得很漂亮 这是标记的屏幕截图 在将数据子
  • EF 映射为表中的所有列名称添加前缀

    我有一个大型现有数据库 它有一个约定 其中所有列名称都以非复数表名作为前缀 例如 Tablename addresses Columns addressId addressLine1 addressLine2 是否有任何配置可以申请映射 使
  • CMake 安装目标依赖项

    我正在编写一个包含库本身和示例的库 并且我正在使用 CMake cmake minimum required VERSION 3 6 add executable example main cpp install DIRECTORY inc
  • 断开连接时 Firebase 更新

    我在 firebase 上有一个节点 列出了游戏中的所有玩家 当新玩家加入时 此列表将更新 当当前用户 我 断开连接时 我想将自己从列表中删除 由于列表会随着时间的推移而变化 在我断开连接的那一刻 我想更新此列表并更新 firebase 这