2013-08-21 9 views
16

Ich habe zwei Anwendungen, die ich synchronisieren muss. Einer von ihnen erhält Daten von Benutzern und der andere wird die Daten anzeigen. Beide Anwendungen funktionieren auf verschiedenen Servern. Sie könnten manchmal getrennt werden und sie müssen weiterarbeiten, bis sie wieder verbunden sind, sodass ich die Daten von der ersten Anwendung in der zweiten Anwendung replizieren werde.Verbinden Sie zwei Meteor-Anwendungen mit DDP

Auf Meteor Dokumentation fand ich DDP.connect(url), aber ich bin mir nicht sicher, wie man es benutzt. Ich habe viele Fragen und Beispiele gefunden, die nicht Meteor-Anwendungen mit Meteor über DDP verbinden, aber nichts über das Verbinden zweier Meteor-Anwendungen.

Mein erster Ansatz war so etwas wie dieses:

Anwendung 1

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

Anwendung 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 
    } 
} 

Auf der zweiten Anwendung, wie kann ich die Elemente aus der ersten Anwendung zu bekommen?

Antwort

34

Ich habe einen Hinweis von dieser Frage How to properly use Meteor.connect() to connect with another Meteor server. Ich habe es verpasst, weil es um das alte Meteor.connect() ging, das zu DDP.connect() geändert wurde.

Das funktionierte auf Client und Server

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   
}); 

Jetzt kann ich 2 Items.find().observe()

Warnung

Es ist ein Fehler auf Meteor, die mit Änderungen in der Anwendung 1 von der Anwendung Uhr wird Stoppen Sie die Verbindung zwischen den Anwendungen:

aktualisieren

Der Fehler

Update 2

Dies ist ein Beispielprojekt getestet mit Meteor 0.6.6.2 https://github.com/camilosw/ddp-servers-test

gelöst wurde
+2

Das Problem (1543) scheint jetzt behoben zu sein. (Meteor> 0.8.3) – markmarijnissen

+0

@Camilo Ist der obige Code auf der Client- oder Serverseite? –

+0

@Haikal Nashuha Es funktioniert auf beiden Seiten. Sie können hier ein Beispiel sehen, das auf Serverseite arbeitet [https://github.com/camilosw/ddp-servers-test](https://github.com/camilosw/ddp-servers-test) – Camilo