如何尽快(不是实时)向用户显示更新的数据?

时间:2017-11-21 08:15:21

标签: asp.net websocket signalr polling server-sent-events

在数据库中,某些实体正在通过某些后端进程进行更新。我们希望向用户显示此更新值,而不是实时但在网站上尽可能快。

我们在使用这些方法时遇到的问题。

  • 轮询: - 我们知道有更好的技术,然后轮询像SSE,WebSockets。
  • SSE: - 在SSE中连接打开很长时间(我在互联网上搜索,发现它使用长轮询)。当用户增加时可能会导致问题。
  • WebSockets: - 因为我们只需要单向通信(从服务器到客户端),所以SSE比这更好。

我们的解决方案

  • 我们在用户的每个请求中检查数据库并更新值。(它不是很好,因为它将取决于用户的下一个请求)

这是好方法还是有更好的方法来做到这一点还是我错过了一些关于SSE的东西(误解了一些东西)。

使用SignalR而不是全部这样可以吗?(是否存在长连接问题?)

感谢。

2 个答案:

答案 0 :(得分:1)

它符合您的要求您应该使用的内容。

选项:

  1. 您的客户只需提供更新信息,如果他们提出请求 - >按照你的方式
  2. 如果您需要具有不同客户端类型的解决方案(例如Webclient,Winformclient,Androidclient,....),并且您有不同的浏览器类型,您应该支持这些类型。并非所有浏览器都支持所有机制...... SignalR旨在根据客户支持的机制自动选择正确的传输机制 - > SignalR是一个选项。(在此处阅读更多详细信息:https://www.asp.net/signalr)还有连接保持活动的选项。
  3. 还有像https://pusher.com/这样的替代方案(简而言之,这只是一个可以发送消息的队列,也可以订阅消息)但是这些服务只有在例如某些数据量之前才是免费的。

答案 1 :(得分:-1)

您可以使用基于事件的通信。如果后端/数据库中存在更改(事件),则服务器应向客户端发送消息。
您的应用应注册相应的事件,并在有更新时刷新用户界面。
我们在我们的应用程序中使用Socket IO作为此用例,并且它运行良好。
这是网站https://socket.io/