我正在创建一个音乐网络应用程序,它可以流式传输我存储在 MongoDB(GridFS) 中的 MP3。
我的问题:如何添加 http 范围支持,以便我可以开始流式传输音频文件 1/2,而无需等待缓冲区。
我知道 GridFS 支持读取 X 字节 - X 字节,所以基本上我只需要知道如何让 nodejs 理解它只需要字节 X - X。
谢谢!
我正在创建一个音乐网络应用程序,它可以流式传输我存储在 MongoDB(GridFS) 中的 MP3。
我的问题:如何添加 http 范围支持,以便我可以开始流式传输音频文件 1/2,而无需等待缓冲区。
我知道 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
(Requested range not satisfiable)的Content-Range
字段bytes */*
或忽略范围请求并返回200
文件的整个正文。
在这种情况下,服务器还必须发送一个Accept-Ranges
包含接受范围单位值的字段bytes
。但是范围单位可以是您想要的任何自定义范围单位。
来源:RFC2616