如何将块中的字节传输到客户端?

时间:2012-10-10 17:13:36

标签: byte signalr messages transfer

当我从服务器上的客户端向客户端(或客户端到服务器;或从服务器到客户端)传输大块字节时,

SignalR丢失了许多消息。

我将文件读入流中并通过集线器或持久连接发送到其他客户端。这种方式运行得非常快,但总会丢失或丢失消息。

如何在不丢失消息的情况下将大型文件(无论是否为块)从客户端传输到客户端?

3 个答案:

答案 0 :(得分:5)

正如@dfowler指出的那样,这不是适合这项工作的技术。我建议做的是发送一条消息,说明有一个要下载的文件包含该链接,然后您可以使用针对静态文件或使用ASP.NET WebAPI编写的某些Web服务的标准GET请求下载该文件。

答案 1 :(得分:4)

SignalR不用于文件传输,它用于发送消息。

答案 2 :(得分:4)

为什么它不是正确的技术?如果客户端需要将一些数据发送到signalR集线器,它应该能够通过signalR连接而不需要额外的东西。

实际上它在发送字节数组时工作正常,至少对我而言,但是在传输块时我遇到了类似的问题。

也许您可以进行一些测试来检查发送块的顺序是否与接收顺序相同。

<强>更新

我自己做了一个测试,在我的情况下,订单确实是问题所在。修改了接收块的hub方法接受一个order参数,然后我用它来重建字节数组,并且工作正常。尽管如此,我现在明白这对大文件传输不会有效。

在我的情况下,我不需要传输大量数据,我只想给我的UI指示进度,要求数据以块的形式发送。