gpt4 book ai didi

node.js - 通过 Node 流式传输连续的 HTTP 响应

转载 作者:可可西里 更新时间:2023-11-01 17:28:07 31 4
gpt4 key购买 nike

我正在尝试使用 NodeJS 服务器充当客户端和 IP 摄像机之间的代理。当我从摄像头请求实时流时,它以

响应
HTTP/1.0 200 OK
Content-Type: Application/octet-stream

接着是连续的数据流。如果我在 Chrome 中打开相机流,它会启动一个永无止境的下载,并且 curl 它也会启动一个连续的响应。

Node 似乎每次都在缓冲来自摄像头的响应并通过其 HTTP 解析器对其进行解析。第一次工作正常,因为它具有正确的 header ,但在第二个数据缓冲区时出现错误

HPE_INVALID_HEADER_TOKEN

有人可以帮忙解释一下为什么会这样吗?它是一个连续的数据流,为什么它要尝试在第二个缓冲区上解析 HTTP header ?我不确定是否缺少某个选项,或者我的相机没有正确遵循 HTTP 规范。

编辑:示例代码

const options = {
family: 4,
headers: {
Authorization: 'Basic ' + base64EncodedAuth,
},
host: '192.168.1.131',
method: 'GET',
path: '/cgi-bin/realmonitor.cgi?action=getStream&channel=1&subtype=0',
port: 80,
protocol:'http:',
};


const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});

req.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});

req.end();

唯一被命中的回调是“错误”回调。

最佳答案

我进一步检查了摄像头的 curl 日志,发现所有内容都被标记为:

<= Recv header

它从不发送 HTTP 规范要求的单独的 CRLF 来表示所有 header 已发送。这就是解析器试图将其解析为 header 并正确地抛出错误的原因。

关于node.js - 通过 Node 流式传输连续的 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42739401/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com