2016-09-20 62 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/

相关问题