2011-03-07 76 views
0

我對網絡應用程序很陌生,所以這可能是一個非常愚蠢的問題。基本上我想有一個與數據庫同步的Web應用程序,它也應該能夠發送將與數據庫同步的數據。可連接/斷開連接的Web應用程序?

我的問題是關於停機時間。如果Web應用程序失去了網絡連接,是否有辦法將輸入的信息保存到它中,直到它重新獲得網絡連接並可以將其同步到數據庫?

感謝您的幫助!

+0

這非常依賴。當客戶端頁面打開時,您當然可以保留任何數據,直到您可以重新打開與服務器的ajax對話。但是,一旦用戶關閉了頁面,您的選擇就會變得更加有限 - 我可以想到的僅僅是一個cookie,而這只是4096字節。也許考慮一個備份服務器,可以保存數據,直到主服務器可以再次訪問? – dartacus 2011-03-07 08:26:54

+0

剛剛意識到 - 你開始談論網絡應用程序,但完成了談論移動應用程序的問題。如果你正在設計一個完全成熟的android/iphone/blackberry/etc應用程序,你的客戶端數據存儲選項顯然要好得多:sqlite dbs等等。即使對於web應用程序,你也可以使用這樣的東西:http ://blogs.sitepoint.com/2005/10/21/store-large-data-client-side-with-amass/(雖然它對我來說有點不友善) – dartacus 2011-03-07 08:30:36

+0

對不起,這是一個錯誤,我沒有意思是說移動應用程序。所以如果頁面保持打開並且輸入的信息很好?我想這是最好的,我希望:) – tweetypi 2011-03-07 08:34:04

回答

1

理想情況下,您希望使用HTML5本地存儲編寫http fifo隊列。在大多數情況下,這是非常矯枉過正的,但在工作中,我們擁有適用於iOS,WP7,Android和Javascript的本地客戶端庫,並且都提供持續排隊和可靠傳遞,因此無論出於何種原因它們都必須處理服務器連接。

獲取/發佈 - >進入內存隊列 - >保存到存儲 - >發送 - >從存儲中刪除 - >提高「發送」回調。

如果消息未能發送,則將其保留在存儲器中並將其重新存儲在內存中。

有一個計時器事件,每隔幾秒就會啓動隊列(以及在添加/刪除消息時踢出隊列)。限制最大同時連接數(每個客戶端的Http應爲2)。

然後每次您的Web應用程序加載時,嘗試將本地存儲中的所有項目重新讀回到內存中隊列。

然後你有持續/可靠的排隊,不會丟失任何消息:)

+0

哦,對,這實際上適用於iOS,WP7和Android?因爲我不認爲WP7有HTML5的支持...... – tweetypi 2011-03-07 09:52:57

+0

原生到每個平臺 - 所以WP7是.Net,iOS Objective C等,我們的Webapp是Javascript/HTML5 :)所有實現相同的事情,並公開相同的API給開發者。 – Tyler 2011-03-07 18:46:07