在服务器上有以下代码:
Meteor.publish(null, function(){
// Return some cursors.
})
根据文档会产生以下效果:记录集自动发送到所有连接的客户端。
我如何在客户端确定是否已收到此功能发布的所有文档?如果我改用订阅,它会为我提供一个就绪回调,让我知道何时收到所有文件。这里的匹配方式是什么?或者当我的客户端代码开始执行时,客户端是否已经收到文件?
恐怕没有办法为universal subscriptions
上面提到的所谓的你准备好回调。看看Meteor 的这部分代码,其中publish
和subscription
逻辑是在服务器上定义的。为方便起见,我复制/粘贴以下代码:
ready: function () {
var self = this;
if (self._isDeactivated())
return;
if (!self._subscriptionId)
return; // unnecessary but ignored for universal sub
if (!self._ready) {
self._session.sendReady([self._subscriptionId]);
self._ready = true;
}
}
_subscriptionId
仅提供给命名订阅,即您将使用Meteor.subscribe
方法手动定义的订阅。发布函数对应的订阅null
,并没有自己的_subscriptionId
,所以从上面的代码可以看出,服务端不是试图向ready
客户端发送消息的事件。