2014-12-06 34 views
0

我正在使用Firebase,可能有點不合常規 - 用於簡單表單提交。提交我網站的聯繫表格只會導致:使用Firebase提交簡單表單;我可以在離線時檢測嗎?

ref.push({name:'dr foo', email:'[email protected]', message:'bar'}, myCallback); 

Firebase已聯繫到Zapier以向網站所有者發送電子郵件。一切運作良好,但我希望能夠處理用戶失去他們的連接。當Firebase無法訪問服務器時,我想顯示:「請檢查您的連接」,或者在用戶點擊發送按鈕時顯示類似的消息。 「謝謝,我們會聯繫」類型的消息應該只在成功寫入時顯示。

起初,我嘗試在回調中包含一個if (error)分支,但當然斷開連接並不是Firebase認爲錯誤的原因,因爲它在可能時會「趕上」。

我也試過code in the docs,它監測.info/connected。雖然這不會在表單提交嘗試中顯示消息,但我想我可以在斷開連接時顯示警告。該示例間歇性地工作(Chrome 39,Firefox 30,Linux Mint),但斷開連接和事件觸發之間的延遲意味着它可能不適合這種情況。

是我想要做的可能嗎?

回答

0

確實似乎.info/connected值只有在其他一些數據傳輸發生(並失敗)時纔會改變。

我能想出的唯一方法是使用transaction機制applyLocally設置爲false。例如。

function testOnlineStatus() { 
    var ref = new Firebase('https://your.firebaseio.com/'); 
    ref.child('globalcounter').transaction(function(count) { 
     return (count || 0) + 1; 
    }, function(error, committed, snapshot) { 
     if (error) { 
      alert('Are you offline?'); 
     } 
    }, false /* force roundtrip to server */); 
} 
setInterval(testOnlineStatus, 2000); 

這個在大約15秒後觸發了我。

+0

感謝您的回答。不幸的是,我需要更低的響應時間。 – KnewB 2014-12-10 10:30:42

相關問題