使用ASP .Net SignalR进行单个客户端的长轮询?

时间:2013-07-14 16:35:37

标签: asp.net-mvc-4 streaming iis-7.5 signalr long-polling

我遇到这个问题,我需要从Web应用程序(在服务器上)压缩(压缩)多个文件,然后再将其流式传输到浏览器。我从连接到SQL数据库的单独服务中提取文件。因此,在将压缩包流式传输到浏览器之前,从服务打开文件以及压缩文件的延迟会有很大的延迟。理想情况下,我希望页面上的DOWNLOAD按钮调用服务器上的SignalR方法,然后在多个文件完成压缩后将通知推送回客户端。这样,浏览器就不会请求服务器立即流式传输压缩文件。只有在多个文件压缩完成后才会开始流式传输。

背景信息:我正在使用IIS 7.5和MVC 4。

我一直在阅读和观看SignalR上的视频,但只看过聊天中心的示例并推送到多个客户端等。是否可以仅对发出请求的客户端使用SignalR?如果是这样,我会欣赏一些示例代码,或者可能是一个关于如何实现这样的事情的教程的链接。谢谢!

1 个答案:

答案 0 :(得分:1)

要实现您的需求,您必须定义3个客户

  • 浏览器,请求下载时会调用 The Hub ,然后等待来自 The Hub 的来电下载文件。
  • 服务器,当浏览器请求下载时,会收到来自 The Hub 的通知,当所有内容都准备就绪时, The Hub 会通过文件。
  • 服务,从服务器传递 The Hub 时收到文件,并准备好下载文件,然后发送通知 The Hub 以通知浏览器

注意

不建议在内存中存储大文件,并且通过SignalR传递它不是很好,除非它是服务器和服务可以共享文件的唯一方式,所以如果你有共同点存储-Disk或数据库 - 然后更好地使用它