聊天室。因此,与聊天教程加载聊天“表”的方式相同,您可以只拥有一个“房间”表。然后你可以只抢你想要的房间。因为 gun 使用partials来快速,所以它只会加载你订阅的数据。是的,客户端只能存储整个数据的一个子集——但这当然可能会影响您的复制/持久性级别。如果您担心这一点,那么运行“强大”的对等点(如服务器)是一个简单而完美的解决方案,因为它会备份所有内容。(不幸的是,因为 WebRTC 存在问题*,所以无论如何你都必须运行一个中继服务器对等点。所以也不妨将它用于存储)。
多个实例。您不需要为每个键实例化多个枪实例。事实上,这很糟糕。如果你不这样做会更好。这是可能的,但是我们没有尽可能多地对此进行测试,因为它并不理想。
安全/授权是一个非常敏感的话题,所以这很大程度上取决于你想要如何构建你的应用程序。如果您要进行真正的 P2P/去中心化设计,那么您需要进行端到端的公钥/私钥加密和签名。这样其他用户实际上无法读取数据,即使他们可能正在帮助备份数据。但是,如果您想保持简单并像大多数应用程序一样构建您的应用程序......作为集中式服务,那么您将代理写入您的服务器。这是大多数人目前在构建应用程序时使用的相同技术,而 GUN 可以做同样的事情。
WiFi/限速数据。不幸的是,这在 JavaScript 中不直接可用,但听起来像您提到的 PhoneGap 的混合应用程序可以访问该信息。GUN 被设计为在这种情况下工作,因为它是离线优先的。但是,您如何与为您提供这些条件的外部 API 进行交互……超出了我的经验,但可行。
时间数据/限制数据传输. 首先看我上面的回复,可行但依赖于外部 API。不过,就限制查询而言,是的。答:我们很快就会引入“词汇游标”,这将允许客户限制响应,但是我们可能会逐步推出其每个限制功能(因为它并不是社区的首要任务,但您的参与将升级它!),首先是精确的属性匹配(就像一个 SQL 选择语句 - 事实上,我们将使用它来为 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/信令服务器来引导 WebRTC 连接。这太烦人了。这意味着即使 WebRTC 是 P2P,为了获得连接,您必须通过一些服务器,这必须为每次页面加载感到高兴。正因为如此,我们默认将 gun 与 websockets/JSONP 捆绑在一起,它必须连接到 gun 中继服务器对等点(也有社区 gun relay peers 可供人们用于个人实验,但很容易运行您自己的在第 4 点)。结果,我们还没有发布 WebRTC 适配器,尽管事实上 WebRTC + gun 非常适合 - 愚蠢的 STUN/ICE/信令服务器。