可以在这种情况下使用SignalR吗?

时间:2017-11-21 16:02:21

标签: c# asp.net-mvc signalr

我需要帮助我采取的方法。

所以我有这个场景,我在我的一个MVC应用程序中使用DataReader从数据库获取数据。在结束点(即web api控制器),我将数据作为IEnumerable<>类型返回。

我正在使用foreach()从IEnumerable一次读取一行,并使用SignalR将数据返回给客户端。因此,客户端在服务器端调用方法,服务器连续(逐行)启动流数据。

现在我想以块的形式返回数据而不是一次返回一行,我设法修改foreach循环并一次返回'n'行(所以现在它一次发送n行),但它发送它们一直持续到数据耗尽,然后关闭连接。

我以块的形式发送数据的原因是,在UI(Angular)的页面中显示数据。

我的问题是,我可以根据需要进行SignalR调用,比如发送前10行,然后等待客户端点击下一页并再次开始发送11到20个rowas等等。(I我试图避免每个客户端调用的数据库调用,所以循环应该从之前开始。)

我没有给客户一个跳转到某个页面的选项(只是一页一页)。

此外,我想知道我们是否可以保持以前页面的状态,以便如果客户想要转到上一页。 (我不认为没有将内存中的数据保存在我试图避免的某个地方)。

请告诉我SignalR是否可以在这种情况下使用。如果没有,对此有什么好处?

我是SignalR的新手,我也是C#的初学者,所以请放轻松我。

如果您需要进一步澄清,请与我们联系。

1 个答案:

答案 0 :(得分:-1)

我想知道你的意思是否应该以这种方式使用SignalR?&#34;。

您的问题不是一个SignalR问题。您可能希望为api添加分页,在单个请求中进行查询,获取所需内容以关闭连接并将该数据返回给客户端。

现在,如果用户点击加载更多数据,即请求(拉动),则不需要SignalR(推送)。

这可能不是SignalR最具扩展性的用途。