SignalR
丢失了许多消息。
我将文件读入流中并通过集线器或持久连接发送到其他客户端。这种方式运行得非常快,但总会丢失或丢失消息。
如何在不丢失消息的情况下将大型文件(无论是否为块)从客户端传输到客户端?
答案 0 :(得分:5)
正如@dfowler指出的那样,这不是适合这项工作的技术。我建议做的是发送一条消息,说明有一个要下载的文件包含该链接,然后您可以使用针对静态文件或使用ASP.NET WebAPI编写的某些Web服务的标准GET请求下载该文件。
答案 1 :(得分:4)
SignalR不用于文件传输,它用于发送消息。
答案 2 :(得分:4)
为什么它不是正确的技术?如果客户端需要将一些数据发送到signalR集线器,它应该能够通过signalR连接而不需要额外的东西。
实际上它在发送字节数组时工作正常,至少对我而言,但是在传输块时我遇到了类似的问题。
也许您可以进行一些测试来检查发送块的顺序是否与接收顺序相同。
<强>更新强>
我自己做了一个测试,在我的情况下,订单确实是问题所在。修改了接收块的hub方法接受一个order参数,然后我用它来重建字节数组,并且工作正常。尽管如此,我现在明白这对大文件传输不会有效。
在我的情况下,我不需要传输大量数据,我只想给我的UI指示进度,要求数据以块的形式发送。