使用DDP连接两个Meteor应用程序

Cam*_*ilo 16 meteor

我有两个需要同步的应用程序.其中一个将从用户接收数据,另一个将显示数据.两个应用程序都可以在不同的服 它们可能在某些时候断开连接,并且需要继续工作直到重新连接,因此我将从第二个应用程序上的第一个应用程序复制数据.

在我发现的Meteor文档中,DDP.connect(url)但我不确定如何使用它.我发现了许多问题和示例,使用DDP将非Meteor应用程序与Meteor连接,但没有关于连接两个Meteor应用程序的问题.

我的第一种方法是这样的:

申请1

Items = new Meteor.Collection('items');
Items.insert({name: 'item 1'});
if (Meteor.isServer) {
  Meteor.publish('items', function() {
    return Items.find();
  });
}
Run Code Online (Sandbox Code Playgroud)

申请2

Items = new Meteor.Collection('items')
if (Meteor.isServer) {
  var remote = DDP.connect('http://server1.com/);
  remote.onReconnect = function() {
    remote.subscribe('items');
    var items = Items.find();
    console.log(items.count());  // expected to be 1 but get 0
  } 
}
Run Code Online (Sandbox Code Playgroud)

在第二个应用程序中,如何从第一个应用程序中获取项目?

Cam*_*ilo 34

我从这个问题得到了一个线索如何正确使用Meteor.connect()连接另一个Meteor服务器.我错过了它,因为它是关于旧的Meteor.connect()改变了DDP.connect().

这适用于客户端和服务器

var remote = DDP.connect('http://server1.com/');
Items = new Meteor.Collection('items', remote); 

remote.subscribe('items', function() {
  var items = Items.find();
  console.log(items.count());  // get 1         
});
Run Code Online (Sandbox Code Playgroud)

现在我可以使用应用程序2来监视应用程序1中的更改 Items.find().observe()

警告

Meteor上有一个错误会阻止应用程序之间的连接:

更新

这个bug已经解决了

更新2

这是一个使用Meteor 0.6.6.2测试的示例项目https://github.com/camilosw/ddp-servers-test

  • @ user1623481在某些情况下,您只想将数据子集公开给另一个应用程序而不是公开整个数据库. (3认同)
  • 问题(1543)现在似乎已得到解决.(流星> 0.8.3) (2认同)