2016-09-20 59 views
0

在我花時間對此進行原型設計之前,我想我會請求其他人提供一些輸入。SignalR和瀏覽器本地存儲用例

我在網頁上有一個列表,當用戶超出範圍(蜂窩,無線等)時,我需要用戶能夠對每個列表項目的數據進行更改,並將更改保留在本地直到連接重新建立。

所以我的想法是使用SignalR和瀏覽器本地存儲來實現這一點。

SignalR是發送/接收實時數據的連接。

如果連接狀態連接,我正常進行,提交在實時的形式變化。

如果連接狀態斷開時,本地存儲器用於存儲所述修改的形式的數據,直到與輪轂的重新連接發生時,在該時間餘發佈數據到服務器進行保存。

任何人都可以在此打洞?優點缺點?一個更好的方法?

我堆棧的JavaScript,HTML5,C#API提前爲您的想法

感謝。

回答

0

已經使用SignalR for ASP.NET Web API,我肯定會推薦它。

確保您擁有所有要求滿足,讓SignalR使用「WebSockets的」,因爲這是真正的雙向連接,並給檢測斷開的最佳方式進行連接。

如果SignalR無法使用網絡套接字然後回落到機制,比如「服務器發送的事件」,它工作正常只是沒有以及網絡插座。

用於對網絡插座與SignalR最低要求的信息,請參閱http://www.asp.net/signalr/overview/getting-started/supported-platforms

+0

serverSentEvents不輪詢 - 服務器以流方式 – Pawel

+0

將數據推送到客戶端在測試中我發現serverSentEvents有存活的一種形式,因爲這種假設的連接方法是輪詢的一種形式。調整後的答案,謝謝。 –

0

SignalR不應該被用來從服務器提交數據和檢索數據,當你想在服務器通知某些事件發生在客戶端(瀏覽器/移動/桌面),你應該只使用它,收到通知後可以查詢服務器以獲取最新數據。

對於您的情況,您可以檢查爲此目的專門構建的Ado.Net數據服務。

如果您想要使用瀏覽器本地存儲,那麼您可以隨時將數據保存到服務器,萬一出現連接錯誤,請將其保存到本地存儲,並使用單個SignalR連接來了解連接狀態(在線/離線),一旦你獲得連接重新上線,你可以發佈你存儲在本地存儲器中的更新到服務器

+0

爲什麼signalr不應該用來從服務器獲取數據? – Tester

+0

因爲它沒有被設計爲做到這一點,並且還有其他方法可以從服務器獲取數據,所以SignalR主要關注的是獲得服務器通知,使用它從服務器獲取數據最終會導致設計問題 –

+0

如果你使用的是signalr,你只能發送小數據到服務器,我沒有看到爲什麼要並行使用WebAPI。 SignalR是爲兩種方式而設計的。或者你能告訴我一個鏈接在哪裏寫的? – Tester

0

如果你不喜歡自己構建這個,也許PouchDB解決你的問題。你不需要任何的SignalR或WebAPI的東西。

https://pouchdb.com/

相關問題