0

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

背景信息:我使用的是 IIS 7.5 和 MVC 4。

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

4

1 回答 1

1

为了实现您的需求,您必须定义 3 个客户端

  • 浏览器,它会在请求下载时调用The Hub,然后它会等待来自The Hub的调用以下载文件。
  • 当浏览器请求下载时,服务器会收到来自The Hub的通知,并且当一切就绪时,会调用The Hub来传递文件。
  • 服务端,从服务器端传过来的文件,从集线器接收,并准备好文件下载,然后向集线器发送通知,通知浏览器

笔记

不建议将大文件存储在内存中,并且通过 SignalR 传递它也不是很好,除非它是服务器和服务共享文件的唯一方式,所以如果你有一个公共存储 - 磁盘或数据库 - 那么最好用它

于 2013-07-17T10:39:16.793 回答