16

同期する必要がある 2 つのアプリケーションがあります。1 つはユーザーからデータを受信し、もう 1 つはデータを表示します。両方のアプリケーションは、異なるサーバーで動作します。それらは時々切断される可能性があり、再接続するまで動作し続ける必要があるため、最初のアプリケーションからのデータを 2 番目のアプリケーションに複製します。

Meteor のドキュメントで見つけましDDP.connect(url)たが、使い方がわかりません。Meteor 以外のアプリケーションを DDP を使用して Meteor に接続する多くの質問と例を見つけましたが、2 つの Meteor アプリケーションの接続については何も見つかりませんでした。

私の最初のアプローチは次のようなものでした:

アプリケーション 1

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

アプリケーション 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
  } 
}

2 番目のアプリケーションで、最初のアプリケーションからアイテムを取得するにはどうすればよいですか?

4

1 に答える 1

34

私はこの質問から手がかりを得ましたHow to appropriate Meteor.connect() to connect with another Meteor server . 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         
});

これで、アプリケーション 2 からアプリケーション 1 への変更を監視できるようになりました。Items.find().observe()

警告

Meteor には、アプリケーション間の接続を停止するバグがあります。

アップデート

バグは解決しました

更新 2

これは Meteor 0.6.6.2 でテストされたサンプル プロジェクトですhttps://github.com/camilosw/ddp-servers-test

于 2013-08-21T14:39:03.797 に答える