Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 使用ASP.Net Signaler为单个客户端进行长轮询?_Asp.net Mvc 4_Streaming_Iis 7.5_Signalr_Long Polling - Fatal编程技术网

Asp.net mvc 4 使用ASP.Net Signaler为单个客户端进行长轮询?

Asp.net mvc 4 使用ASP.Net Signaler为单个客户端进行长轮询?,asp.net-mvc-4,streaming,iis-7.5,signalr,long-polling,Asp.net Mvc 4,Streaming,Iis 7.5,Signalr,Long Polling,我有这个问题,我需要压缩(压缩)多个文件从网络应用程序(在服务器上),然后再流到浏览器。我从连接到SQL数据库的单独服务中提取文件。因此,在从服务中打开文件时会有很大的延迟,在压缩包可以流式传输到浏览器之前压缩文件时也会有延迟。理想情况下,我希望页面上的下载按钮调用服务器上的signar方法,在完成多个文件压缩后,该方法会将通知推回到客户端。这样,浏览器就不会立即请求服务器对压缩文件进行流式处理。它只会在多个文件压缩完成后开始流式处理 背景信息:我正在使用IIS7.5和MVC4 我一直在阅读和观

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

背景信息:我正在使用IIS7.5和MVC4


我一直在阅读和观看信号器上的视频,但只看到聊天中心和推送多个客户端等的示例。是否可以仅为发出请求的客户端使用信号器?如果是这样的话,我会很感激一些示例代码,或者是一个关于如何完成类似任务的教程的链接。谢谢

要实现所需,您必须定义3个客户端

  • 浏览器,当请求下载时,它将调用集线器,然后等待来自集线器的调用下载文件
  • 当浏览器请求下载时,服务器会从中心接收一个通知,当一切就绪时,会调用中心传递文件
  • 服务,在从服务器传送文件时,从集线器接收文件,并准备好下载文件,然后向集线器发送通知以通知浏览器
注意


不建议将大文件存储在内存中,也不建议通过Signal传递,除非这是服务器和服务共享文件的唯一方式,因此如果您有一个公共存储—磁盘或数据库—最好使用它

,这听起来根本不像长时间轮询。您想要完成的功能非常非常类似于聊天中心的工作方式——一个客户端将数据推送到服务器,然后服务器将数据推送到其他客户端。在您的情况下,一个客户机请求下载,然后服务器在负载准备好后将其推回到同一个客户机。非常非常相似的机制,除非您的流程的性质有什么特别之处,否则修改您看到的代码示例应该相当容易。长轮询是Signal的通信方式之一,Signal的所有功能都可以与任何底层通信方法一起使用,无论是长轮询,Web套接字或其他。现在,在您的例子中,它是@richardnielilagan,使用示例聊天应用程序,您可以发送文件(字节数组),而不是发送文本。出于安全原因,我工作的公司不喜欢使用AJAX流式处理文件。signar是否使用AJAX在客户机和服务器之间来回通信?我的想法是简单地使用signer向客户端发送信号(不是双关语),让它知道现在可以请求下载了。然后,客户机将请求一个文件,下载过程将正常进行(即,服务器将使用正常的http过程来传输文件)。这在Signal上可行吗?是的,你可以根据计时器或另一个客户端调用(下载页面中的JavaScript)在客户端上使用filename参数调用函数,然后客户端将正常请求文件。我实际上是从web服务中提取文件。是否有任何方法可以从服务器中提取内存中的文件,然后触发客户端进行httpRequest以流式传输该文件?或者,文件是否必须持久保存在服务器的硬盘上?