gpt4 book ai didi

cordova - 关于 gunDB 作为 Cordova 项目的独立数据库的具体问题

转载 作者:行者123 更新时间:2023-12-02 13:56:13 24 4
gpt4 key购买 nike

我刚刚发现了 gunDB,这个概念似乎很有趣,我想在开始进一步评估之前了解更多关于它的信息。

  • 如果我想像教程一样构建一个聊天应用程序,但要实现聊天 房间 .有没有办法让客户只“订阅”某些聊天室,而避免转移其他聊天室的内容?如果不是所有数据都同步到所有客户端,这将如何影响持久性?我们是否需要运行一个特殊的客户端(即服务器?)来确保所有数据始终保持事件状态?
  • 对于同一个聊天室教程,如果我想订阅多个聊天室,是否需要实例化多个 Gun 实例,每个实例都使用“对等”存储?
  • gunDB中的用户管理/密码等应该如何处理?
    向每个客户端发送用户数据库的副本很有趣
    复制的立场,但从安全方面来看,似乎相反
    直观。
  • 有没有办法让枪只在某些情况下同步,比如当 WiFi 连接可用时(想想 Cordova)?
  • 时态数据呢?聊天应用程序中有没有办法,对于
    例如告诉 gunDB 我只对 future 的消息感兴趣
    并忽略在某个特定时间之前创建的任何内容
    状态/时间戳(再次避免在
    昂贵的数据计划)?
  • 你如何在 gunDB 中持久化磁盘(潜在的循环)数据和
    如果需要,将数据加载回数据库?
  • 你可以让枪同时监控两个键吗?例如,如果客户端需要显示聊天数据和待办事项列表(教程中的两个“键”),假设两者都是“对等的”。
  • 是否有关于如何使用我自己的服务器进行存储的教程?
  • 最佳答案

  • 聊天室。 所以以同样的方式chat tutorial加载聊天“表”,您可以只拥有一个“房间”表。然后你只能抢到你想要的房间。因为枪用partials为了快速,它只会加载您订阅的数据。是的,客户端只能将数据的一个子集作为一个整体存储 - 但是这当然可能会影响您的复制/持久性级别。如果您对此感到担心,那么运行“强”对等方(如服务器)是一个简单而完美的解决方案,因为它将备份所有内容。 (不幸的是,因为 WebRTC 有问题*,无论如何你都必须运行一个中继服务器对等点。所以也可以将它用于存储)。
  • 多个实例 .您不需要为每个键实例化多个枪实例。事实上,这很糟糕。如果你不这样做会更好。这是有可能的,但是我们没有尽可能多地测试它,因为它并不理想。
  • 安全/授权是一个非常敏感的话题,所以这很大程度上取决于你想如何构建你的应用程序。如果您要进行真正的 P2P/分散式设计,那么您需要进行端到端的公钥/私钥cryptography and signatures .这样其他用户实际上无法读取数据,即使他们可能正在帮助备份数据。但是,如果您想保持简单并像大多数应用程序一样构建您的应用程序......作为集中式服务,那么您将代理写入您的服务器。这与大多数人目前在构建应用程序时使用的技术相同,GUN 可以做同样的事情。
  • WiFi/限速数据 .不幸的是,这不能直接在 JavaScript 中使用,但是听起来像您在 PhoneGap 中提到的混合应用程序可以访问该信息。 GUN 旨在在这样的场景中工作,因为它是离线优先的。但是,如何与为您提供这些条件的外部 API 交互……超出了我的经验,但可行。
  • 临时数据/限制数据传输 .先看我上面的回复,可行但依赖于外部 API。不过,就限制查询而言,是的。答:我们很快就会引入“词法游标”,这将允许客户限制响应,但是我们可能会逐步推出其每个限制功能(因为它不是社区的重中之重,但是您的参与将升级它!),首先使用精确的属性匹配(像 SQL select 语句一样 - 事实上,这是我们将用来为 gun 创建 SQL 查询扩展的内容!),然后是词法范围(选择属性开始使用“a”到“c”),这可以通过时间戳范围完成,然后是第三个字节约束(例如一次最多只发送回 200 个字节)。
    但是,很明显,您可以自己手动完成(不是您想要的),您可以只有一个房间表,然后房间是块表,块是消息表。可能房间也有“最后一个”块,然后您可以通过执行 gun.get('rooms').path('mychatroom').path('last').map().val(function(message){ console.log(message); }); 轻松访问您的聊天应用程序或类似的东西。这将使您能够准确控制您想要的条件,但也意味着您必须做更多的工作。
  • 循环引用 .已经为您完成了,拥有任意数量的循环引用 - 这是 gun 擅长的地方,因为它的图形结构(循环引用、表格、文档、键/值等等)。
  • 是的,枪可以同时监控多个按键。
  • 使用您自己的服务器进行存储……这可能意味着一些不同的事情。
    如何运行自己的枪服务器?有一个简单的包装器:https://www.npmjs.com/package/gun-server .如果你想要 Express 的例子和东西,那些也很简单。
    由于不想使用 S3,如何使用当前部署的服务器的文件系统作为存储?您可以使用级别驱动程序 https://github.com/PsychoLlama/gun-level .
    那回答了吗?

  • *WebRTC 需要 STUN/ICE/signaling 服务器来引导 WebRTC 连接。这太烦人了。这意味着即使 WebRTC 是 P2P,为了获得连接,你必须通过一些服务器,这必须对每个页面加载感到满意。因此,默认情况下,我们将 gun 与 websockets/JSONP 捆绑在一起,它必须连接到一个枪中继服务器对等点(还有很多社区枪中继对等点可供人们用于个人实验,但很容易运行你自己的)在第 4 点)。因此,我们还没有发布 WebRTC 适配器,尽管 WebRTC + gun 是一个完美的选择——愚蠢的 STUN/ICE/信令服务器。

    关于cordova - 关于 gunDB 作为 Cordova 项目的独立数据库的具体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863163/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com