问题标签 [ddp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何在运行时决定客户端将订阅哪个 Meteor 集合
我正在编写一个 Web 应用程序,它将动态检查 DDP 服务器的集合(发布)。我遇到的一个问题是,一旦创建了 Meteor 集合,它就会在应用程序的整个生命周期内一直存在:
但是,根据用户对应用程序所做的操作,我可能不再对 foo.txt 感兴趣。让这个集合徘徊会很浪费,因为我最终可能会将整个数据库存储在客户端上。
由于客户端不知道它将订阅哪些集合,这个问题变得更糟。我认为这会导致模板助手的设置方式出现问题。到目前为止,我看到的所有示例都显示助手仅返回特定集合的结果,例如:
我仍然对反应模型的工作原理有所了解,但我猜如果我要重新分配 foo:
... 上面的帮助代码不会神奇地更新以返回“bar”的内容。
更新: 由于建议围绕使用订阅和单个集合的组合,我想我给出了一些关于我为什么问这个问题的背景:
- 我的客户端应用程序事先对服务器的发布一无所知
- 服务器对客户端应用程序一无所知
- 应用程序必须动态发现发布(它们存储在应用程序将订阅的“根”集合中)
- 除了 Meteor 服务器,我还使用 DDP.connect 连接到我们自己的 DDP 服务器
我正在开发的应用程序类似于 PHP/Django admin,但适用于我们自己的平台(皮质)。
我可以向服务器添加通过单个发布公开整个数据库的功能,并使用订阅参数来确定发布应该转发哪些集合。
不过,在更改订阅时,这会变成一场噩梦。取消订阅不会清除客户端 minimongo 集合,因此会留下先前订阅的剩余数据。客户端将负责删除订阅之间的数据:
meteor - Meteorjs - Webapp 和移动应用程序的分离界面
我已经完成了这个带有 Web-app 的项目,所以我将开始移动应用程序开发工作,计划使用 Famo.us
我的问题是我知道我可以制作一个单独的移动应用程序项目并通过 DDP 连接它,但我对关于这个主题的文章有点困惑,所以想知道是否有人可以很好地概述如何解决这个问题?
或者在我的情况下是否有更好的解决方案?
python - 通过 DDP 将文件上传到 Meteor
我正在做一个项目,我需要将文件从客户端(运行 python 脚本)上传到我的 Meteor 应用程序,在该应用程序中处理音频文件并将响应发送回客户端。一旦客户端收到响应,它将上传另一个文件,重新开始整个过程。
我一直在使用github.com/foxdog-studios/pyddp通过 DDP 调用各种方法,但无法找出将文件从客户端传输到 Meteor 的最佳方法。任何有关将文件上传到 Meteor 的正确方法的帮助将不胜感激。
javascript - Meteor DDP.connect 不会退回到长轮询
我和我的团队正在 Meteor 中实现基于服务的架构。
我们有前端服务。这只是使用默认的 Meteor 连接。我们还有许多后端服务(例如聊天、搜索),我们通过前端通过DDP.connect(service_url)
.
在前端服务的环境变量中,我们有DISABLE_WEBSOCKETS=1
. 我们还将此环境变量设置为其他服务的相同值。
前端在连接到自身时使用长轮询(默认情况下)。但是,当前端尝试连接到其他服务时,不会禁用 websocket。而且,DDP 并没有退回到长轮询。
具体来说,它首先尝试建立 websocket 连接,然后失败,尝试了几次 XHR 请求。冲洗并不断重复。它这样做了数百次,而且速度非常快。结果,一切都挂了。
当使用多个应用程序时,我们如何让 DDP 回退到长轮询?
security - Meteor 允许我从任何地方订阅,安全漏洞
所以我制作了一个流星应用程序,并删除了自动发布和不安全的包,现在为了从我的收藏中接收数据,我必须在客户端订阅它们。我还有一个 python 程序,它使用python-meteor包通过 ddp 与我的流星服务器通信,在其中我只需订阅我的集合并可以完全访问我的所有数据,我还可以通过 Meteor.calls 调用函数服务器。这很好,但我不禁觉得这是一个主要的安全漏洞,任何人都可以编写一个客户端并订阅我的集合并一时兴起获取我的所有数据,如果他们猜对了集合名称。
有没有办法只让某些客户端订阅集合并执行服务器调用?
ios - martin的Meteor iOS DDP包,如何使用用户名登录
我正在使用这个 DDP 包从我的 iOS 应用程序登录:
https://github.com/martijnwalraven/meteor-ios/
但是我只能找到一个名为 loginWithEmail 的方法。
我该如何编辑它以便我可以使用用户名登录?
android - 在本地机器上使用 DDP 客户端连接到 Meteor 服务器
我正在尝试使用此 DDP 客户端连接到当前在我的开发机器上运行的 Meteor 服务器。它在 localhost:3000 上运行,我已经这样做了:
但由于某种原因,它一直给我这个错误:
我认为这是一个端口问题,所以我一直在更改 websocket 的端口,但这些端口甚至没有响应/连接,我不知道该怎么办了。有人可以帮我吗?
meteor - 流星应用的端口号
我正在尝试使用 DDP 客户端连接到我的 Meteor 应用程序,除了正确的端口号之外,我已经完成了所有操作。它被部署到meteor.com 网站。有谁知道我应该使用哪个端口连接到流星应用程序?
meteor - DDP 呼叫拦截
我正在考虑当 Meteor 客户端(或 DDP 客户端)通过 DDP 连接调用服务器端方法时,我可能希望在服务器上为 Meteor Js 项目执行横切/AOP 或其他功能的场景。
此处的此链接提供了一个非常好的示例,说明如何对对象执行 AOP,但我想知道是否有一种方法可以通过 DDP 连接侦听入站客户端请求,就像 asp.net web api 的 express-interceptor 或操作过滤器一样但是,当然,对于 websocket/ddp rpc 实现。
Meteor Js Api 仅描述服务器上的一个事件“ onConnection ”。这个SO响应提到了客户端上的 connection._send 以执行某些 AOP 功能......但除此之外没有找到很多官方文档。
我基本上想知道是否有一种方法可以在服务器上侦听从所有客户端会话到服务器的所有 DDP 方法调用,如 DDP 规范中所述
谢谢。
meteor - 用于监控客户端的 API -> Meteor 中的服务器集合更新状态
大多数用于编辑文档的协作在线工具(例如 Google 文档)都会提供一条消息,验证您的更改已在编辑完成后保存。
我想在 Meteor 中做同样的事情;向用户提供一条消息,指示最近在客户端上所做的给定更改是否已成功传播到服务器。我希望有一些简单的方法来询问“服务器是否接受了所有客户端更改?”
我找不到 - 是否有支持的 API 来执行此操作?我可以探索 Meteor.Collection._* 属性,但宁愿不使用内部的、易于更改的平台方法和变量。