是否有任何类似XHR的浏览器API可用于通过HTTP将二进制流传输到服务器?
我想提出一个HTTP PUT请求并以编程方式随时间推移创建数据。我不想一次创建所有这些数据,因为可能有大量的数据坐在内存中。一些伪代码来说明我正在得到什么:
var dataGenerator = new DataGenerator(); // Generates 8KB UInt8Array every second
var streamToWriteTo;
http.put('/example', function (requestStream) {
streamToWriteTo = requestStream;
});
dataGenerator.on('data', function (chunk) {
if (!streamToWriteTo) {
return;
}
streamToWriteTo.write(chunk);
});
我目前有一个Web套接字解决方案,但是我希望使用常规HTTP以便更好地与某些现有服务器端代码互操作。
编辑:我可以使用最新的浏览器API。我正在查看Fetch API,因为它支持请求主体的ArrayBuffers,DataViews,Files等。如果我能以某种方式伪造这些对象之一,以便可以将Fetch API与动态数据一起使用,那将对我有用。我尝试创建一个Proxy对象,以查看是否有任何方法可以调用猴子补丁。不幸的是,似乎浏览器(至少在Chrome中)使用本机代码而不是JS语言进行读取。但是,如果我做错了,请纠正我。
慕斯王