许多教程直接通过socket.io教授上传文件,但我发现socket.io-stream可以做同样的事情
非常感谢
答案 0 :(得分:1)
使用流媒体有很多原因:
它包含许多预先打包的,已经过测试的功能,这些功能通常是实现某些数据传输功能的最简单,最可靠的方式。
Streaming执行自动流量控制和缓冲管理。这样即使在流式传输大型对象时,也可以将内存管理保持为托管值。
Streaming提供了一个标准界面,可以轻松地挂钩其他代码(如变换,其他存储介质等)。
已经内置了很多错误处理。
是否使用流式传输实际上是个案的基础。如果您知道流媒体并且您只是尝试将文件从A点发送到B点,我几乎总是使用流式传输,除非有一些特定的原因没有(某些功能之后您更难以实现流式传输) )。
您没有展示您的非流媒体代码的工作原理,因此我们很难直接将流媒体选项与您未展示的代码进行比较,但这里是您对特定问题的猜测:
使用socket.io-stream将文件上传到服务器有什么好处?
见上文。
如果文件大小很小(约300kb),我是否需要流式传输?
“需要流式传输”取决于很多事情。在300kb并且不可能同时在飞行中有数千个,你可能不需要“流”。但我会反过来问自己一个问题。为什么不流呢?如果您有现成的代码,为什么不使用它呢?
流媒体会节省服务器的内存吗?
这取决于你要比较它的实现,但由于流有控制流和自我管理缓冲,因此在使用内存时效率通常很高。
如果我使用base64编码通过websocket上传一些文件(~8mb),它会以不好的方式影响服务器吗?
这完全取决于您的实施。我不会说webSocket特别针对文件上传进行了优化。在大多数情况下,我可能会使用webSocket作为控制通道,并通过http服务器上传大文件,其中上传是一个成熟的功能。对于初学者来说,base64编码对某些类型的数据并不是特别有效。 http和webSocket都支持二进制传输,这通常对文件数据更有效。