asp.net-mvc-4 - 使用SignalR刷新新闻列表

  显示原文与译文双语对照的内容

我有一个 ASP.NET 4.0应用程序。 在我的一个视图中,我希望显示来自 Web API的当前新闻( IEnumerable<News> )的列表。

新闻列表可以能或者不能经常更新。 换句话说,在平均日期,后端团队可以能必须使用后端CMS从 5到 45新闻进入。

我需要找到一种方法来刷新他的浏览器内的新闻列表,当然不会刷新整个网页。

我最初的想法是添加 JavaScript setInterval() 方法,每毫秒调用 Web API,从而获取信息并刷新消息列表。

尽管这将使用不同的方法,但是我想使用 SignalR,因为我相信需求符合 SignalR 提供的内容。

阅读并看了一些关于 SignalR的示例,我开始理解这个想法,但是我仍然有点混淆。

我看到的例子是聊天室和游戏,用户可以点击这些内容触发对 hub的调用。

在我的任务中,用户的不会有任何点击。hub ( 服务器) 应该负责每毫秒调用客户端以更新消息列表。

在性能方面,将整个新闻列表发送到每个X 毫秒并覆盖UI是不可以行的。

我需要一种方法比较当前显示在用户浏览器的新闻列表中新闻 inside的新闻列表。 一旦比较完成,只发送新的比较列表。

有没有人有这样一个场景的例子,或者可以给我一些关于如何开始的指针?

谢谢

时间: 作者:

我制作了一个叫做 SignalR.EventAggregatorProxy的库

它服务于后台服务总线或者事件聚合器之间,无缝地将所有或者所选事件转发到客户端。 客户端订阅某些事件,但你也可以创建自定义约束,以便用户只接收所述事件的选择。

查看 wiki,了解如何设置它

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

使用nuget安装


Install-Package SignalR.EventAggregatorProxy 

当新闻文章添加或者更新时,一旦配置了一个事件,就可以在后端。域。

对于UI使用Knockout或者 Angular 创建一个动态列表,可以推动对UI的更改。 在用户首次连接时加载初始数据并向事件添加侦听器。 一旦事件出现在列表中,如果该项是在列表中更新的,则如果它不添加它。

Lin建议对于小系统来说是很好的,但是一旦系统增长,你不希望直接使用 SQL 。

作者:

Signalr 中可以使用 SqlDependency 来获取数据库更改通知,然后将 IEnumerable<News>knockout 可以观察的array 绑定以自动刷新页面。

使用Signalr更多关于 sql,请看下面的链接:

http://techbrij.com/database-change-notifications-asp-net-signalr-sqldependency

可以观察的array:

http://knockoutjs.com/documentation/observableArrays.html

作者:
...