Nodejs – HTTP范围支持/部分文件下载

我正在创build一个音乐networking应用程序,用于存储我在MongoDB(GridFS)中存储的MP3。

我的问题:如何添加HTTP范围支持,以便我可以开始stream式传输1/2audio文件,而无需等待缓冲区。

我知道GridFS支持读取X字节 – X字节,所以基本上我只需要知道如何让nodejs了解它只需要字节X – X.

谢谢!

客户端将发送一个Range标头,指定绝对开始和结束字节,后面跟着总文件长度或'*'。

例子:

  . The first 500 bytes: bytes 0-499/1234 . The second 500 bytes: bytes 500-999/1234 . All except for the first 500 bytes: bytes 500-1233/1234 . The last 500 bytes: bytes 734-1233/1234 

然后服务器应该返回一个响应码206 (部分内容),而Content-Length应该只是传输的数据量。

在范围错误的情况下,服务器应该返回416 (请求范围不可满足),并且字段bytes */*Content-Range字段,或者应该忽略范围请求,并返回200与整个文件的主体。

服务器还必须发送Accept-Ranges字段,其中包含接受范围单位的值,在本例中为bytes 。 但范围单位可以是任何你想要的自定义范围单位。

资料来源: rfc2616