2013-08-21 3 views
16

У меня есть два приложения, которые мне нужно синхронизировать. Один из них получит данные от пользователей, а другой отобразит данные. Оба приложения будут работать на разных серверах. Их можно было отключить в несколько раз, и им необходимо продолжить работу, пока не будет повторно подключен, поэтому я буду реплицировать данные из первого приложения во втором приложении.Соедините два приложения Meteor с использованием DDP

В документации Meteor я нашел DDP.connect(url), но я не уверен, как его использовать. Я нашел много вопросов и примеров, связывающих не Meteor приложения с Meteor с использованием DDP, но ничего не связывал с двумя приложениями 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 
    } 
} 

На втором приложении, как я могу получить элементы из первого приложения?

ответ

34

У меня есть ключ от этого вопроса How to properly use 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   
}); 

Теперь я могу наблюдать за изменениями в приложении 1 из приложения 2 с использованием Items.find().observe()

Предупреждение

Существует ошибка на Метеоре, который будет прекратить соединение между приложениями:

Обновление

эта ошибка была решена

Update 2

Это образец проекта протестированы с Метеор 0.6.6.2 https://github.com/camilosw/ddp-servers-test

+2

Проблема (1543) теперь исправлена. (Meteor> 0.8.3) – markmarijnissen

+0

@Camilo Это код выше на стороне клиента или сервера? –

+0

@Haikal Nashuha Работает с обеих сторон. Вы можете увидеть пример, который работает на стороне сервера [https://github.com/camilosw/ddp-servers-test](https://github.com/camilosw/ddp-servers-test) – Camilo