У меня есть два приложения метеора, подключаемые через DDP на разных серверах и серверах. Передача данных на сервер B. Это то, как они работают.DDP между двумя серверами не соединяется
Сервер
Items = new Meteor.Collection('items');
Items.insert({name: 'item 1'});
if (Meteor.isServer) {
Meteor.publish('items', function() {
return Items.find();
});
}
Сервер B
var remote = DDP.connect('http://server-a/');
Items = new Meteor.Collection('items', remote);
remote.subscribe('items');
Items.find().observe({
added: function(item) {
console.log(item);
}
});
Каждый раз, когда я называю Items.insert(something)
на сервере А, на сервер BI получил журнал на консоли с объектом я сэкономил на сервере А. Но если сервер B потерял подключение к Интернету, данные, вставленные на сервер A, больше не отображаются на сервере B при повторном подключении к Интернету.
Сервер B подключен к Интернету через маршрутизатор. Эта проблема возникает только при отключении и повторном подключении маршрутизатора, а не при отключении и повторном подключении сервера к маршрутизатору. Оба сервера находятся в разных сетях и подключаются через Интернет.
Я создал таймер на сервере B, который вызывает remote.status()
, но всегда получает { status: 'connected', connected: true, retryCount: 0 }
при подключении или отключении от Интернета.
Update: шаги для воспроизведения
Я создал проект на GitHub с кодом тестирования https://github.com/camilosw/ddp-servers-test. Сервер A установлен на http://ddpserverstest-9592.onmodulus.net/
Мой компьютер подключен к Интернету через беспроводной кабельный модем.
- Run MRT на сервер-б папку
- Перейти к http://ddpserverstest-9592.onmodulus.net/ и нажмите на ссылку Insert (вы можете нажать кнопку Удалить, чтобы удалить все предыдущие вставки). Вы должны увидеть сообщение на своей локальной консоли с добавленным элементом.
- Выключите беспроводную сеть на компьютере и снова нажмите ссылку на вставку. (Вам нужно будет щелкнуть на другом компьютере с доступом в Интернет, я использовал смартфон, чтобы щелкнуть ссылку)
- Включите беспроводную сеть на компьютере. Вы должны увидеть сообщение на своей локальной консоли со вторым элементом.
- Теперь выключите кабельный модем и снова нажмите ссылку на вставку.
- Включите кабель-модем. На этот раз новый элемент не появится на консоли.
Я также сделал это с помощью Android-смартфона, используя возможность совместного доступа к Интернету на свой компьютер через беспроводную сеть. Сначала я отключился и включил беспроводную связь на своем компьютере и работал правильно. Затем я отключился и подключился к Интернету на смартфоне, и у меня такая же проблема.
Update 2
У меня есть два беспроводных маршрутизатора на моем офисе. Я обнаружил, что такая же проблема возникает, если я перемещаюсь между маршрутизаторами.
это может быть связано с https://github.com/meteor/meteor/issues/1724 – imslavko
Эта проблема является дубликатом проблемы, которую я открыл на github https://github.com/meteor/meteor/issues/1543 – Camilo
О, я сожалею, случайно нашел это и подумал, что это будет связано. Не смотрел на настоящие имена. Да, извините за мой ответ, который не помог вообще, на самом деле это то, что нужно решать с помощью каких-то сердечных сокращений. – imslavko