NodeJSサーバを使用してクライアントとIPカメラの間のプロキシとして機能しようとしています。カメラからリアルタイムストリームを要求すると、それは、ノードを介したHTTPレスポンスストリーミング
で続き、データの連続ストリームが続きます。 Chromeでカメラのストリームを開くと、決して終了しないダウンロードが開始され、それをカールすると、継続的な応答が開始されます。
ノードは、カメラからの応答をバッファリングし、そのたびにHTTPパーサーで解析しているようです。これは
HPE_INVALID_HEADER_TOKEN
と罰金それが正しいヘッダを持っているとして、最初の時間を動作しますが、データそのエラーの第2のバッファ時に誰かがこれが起こっている理由を説明する助けてくださいことはできますか?これはデータの連続ストリームです。なぜ、2番目のバッファでHTTPヘッダーを解析しようとしていますか?紛失しているか、カメラが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();
ヒットする唯一のコールバックは、「エラー」です。
node.jsコードを表示して、実際に行っていることを確認できますか?コードに関する質問には常にコードが含まれている必要があります。私はあなたが新しいデータが送信されている限り、それを続けるように応答をパイプしたいと思うでしょう。 – jfriend00
サンプルコードを追加しました。最初は、リクエストパッケージを使用して応答をパイプしていましたが、応答がパイプされる前に同じエラーが発生しました。 – Huw
raw tcpまたはudp socketでデータを取得できませんか?私はあなたがHTTPの解析に問題がないと思う。 –