我有兩個流星應用通過DDP連接到不同的服務器,服務器A發送數據到服務器B.這是他們的工作方式。兩臺服務器之間的DDP不能重新連接
服務器A
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)
在服務器A上,在服務器BI得到了與該對象的控制檯上的日誌我救在服務器A但如果服務器B丟失了Internet連接,則服務器B上插入的數據在重新連接到Internet時不會再出現在服務器B上。
服務器B通過路由器連接到Internet。只有當我斷開並重新連接路由器時,纔會發生此問題,而不是斷開連接並從路由器重新連接服務器。兩臺服務器都在不同的網絡上並通過互聯網連接。
我在服務器B上創建了一個定時器,它調用remote.status()
,但在連接或斷開Internet時始終會獲得{ status: 'connected', connected: true, retryCount: 0 }
。
更新:重現步驟
我與測試代碼https://github.com/camilosw/ddp-servers-test github上創建的項目。服務器A安裝在http://ddpserverstest-9592.onmodulus.net/
我的電腦通過無線電纜調制解調器連接到Internet。
- 地鐵運行在服務器上-B文件夾
- 轉到http://ddpserverstest-9592.onmodulus.net/並單擊鏈接插入(您可以點擊刪除刪除所有先前的插入)。您必須在本地控制檯上看到添加了項目的消息。
- 關閉計算機上的無線連接,然後再次單擊插入鏈接。 (您需要點擊另一臺可以上網的電腦,我用智能手機點擊鏈接)
- 打開電腦上的無線網絡。您必須在第二個項目的本地控制檯上看到一條消息。
- 現在,關閉電纜調制解調器並再次單擊插入鏈接。
- 打開電纜調制解調器。這一次,新項目不會出現在控制檯上。
我也做了一個android智能手機使用選項,通過無線共享Internet到我的電腦。首先,我關掉電腦上的無線設備並開始正常工作。然後關掉智能手機上的互聯網連接,我也遇到了同樣的問題。
更新2
我有我的辦公室兩個無線路由器。我發現如果我在路由器之間移動,也會發生同樣的問題。
的代碼,這可能涉及到https://github.com/meteor/meteor/issues/1724 – imslavko
這個問題是我在github上打開的問題的一個副本https://github.com/meteor/meteor/issues/1543 – Camilo
哦,我很抱歉,隨機發現它並認爲它會有關係。沒有看實際的名字。是的,抱歉我的答案根本沒有任何幫助,事實上這是應該用某種心跳來解決的問題。 – imslavko