SignalR&浏览器本地存储用例

时间:2016-09-20 15:31:25

标签: javascript c# signalr local-storage

在我花时间对其进行原型设计之前,我想我会要求其他人提供一些意见。

我在网页上有一个列表,当用户超出范围(手机,无线等)时,我需要用户能够更改每个列表项的数据,并让更改在本地持续存在,直到连接重新建立。

所以我的想法是使用SignalR和浏览器本地存储来实现这一点。

SignalR是发送/接收实时数据的连接。

如果连接状态已连接,我会照常进行,实时提交表单更改。

如果断开连接状态,本地存储将用于存储修改后的表单数据,直到与集线器重新连接为止,此时我将数据发布到服务器进行保存。

有人可以在这里打洞吗?优点缺点?更好的方法?

我的堆栈是JavaScript,HTML5,C#API

提前感谢您的想法。

3 个答案:

答案 0 :(得分:0)

使用SignalR for ASP.NET Web API我肯定会推荐它。

确保满足所有要求,以允许SignalR使用" WebSockets"因为这是真正的双向连接,并将提供检测断开连接的最佳方法。

如果SignalR无法使用网络套接字,那么它会回退到"服务器发送事件"等机制,它可以正常工作,就像网络套接字一样。

有关使用SignalR的网络套接字的最低要求的信息,请参阅http://www.asp.net/signalr/overview/getting-started/supported-platforms

答案 1 :(得分:0)

SignalR不应该用于提交数据和从服务器检索数据,只有在希望服务器通知客户端(浏览器/手机/桌面)有关某些事件时才应该使用它,在收到通知后你可以查询服务器获取最新数据。

在您的情况下,您可以查看专门为此目的而构建的Ado.Net数据服务。

如果您想使用浏览器本地存储,那么您始终可以将数据保存到服务器,如果出现连接错误,请将其保存到本地存储,并使用单个SignalR连接只是为了知道连接状态(在线/离线),一旦您恢复在线连接,您可以将存储在本地存储中的更新发布到服务器

答案 2 :(得分:0)

如果你不喜欢自己构建这个,也许PouchDB可以解决你的问题。您不需要任何SignalR或WebAPI。

https://pouchdb.com/