nodeJSといくつかの追加モジュールを使用して、一連のWebサイトからWebページのスクレイピングとメディアアイテムの識別を行っています。
ノードサーバーは基本的に、ページで識別されたすべてのアイテムとそれに関連するメタデータのJSONマークアップを返します。JSONデータは、サーバーログで確認できるように正しく生成されますが、クライアントに書き込むと、何らかの理由でJSON応答が終了します。
これをすべてのブラウザーと残りのクライアントを使用してテストしましたが、response.write(response、'utf-8')の問題を示しているようです。これは、データ全体を送信していないか、何らかの理由で接続が閉じられている可能性があります。
テストケースにチャンクが含まれていないことを確認したので、クライアントが次のデータチャンクをまだ待機している場合に、クライアントによって接続が積極的に閉じられることに問題はありません。つまり、この場合のresponse.writeはtrueを返します。これは、すべてのデータがクライアントに書き込まれたことを意味します。
接続が終了したり、応答が切り捨てられたりする原因についてのポインタはありますか?小さいサイズのJSON応答の場合、応答はクライアントによって正しく受信されます。
Code:
return parseDOM(page, url, function(err, response){
if(err){
res.writeHeader(200, {'Content-Type':'application/json'});
res.end('Error Parsing DOM from ' + url);
e.message = 'Error Parsing DOM';
callback(e, req, res, targetUrl);
return;
}
else {
if(response){
res.writeHeader(200, {'Content-Type':'application/json', 'Content-Length':response.length});
console.log(response);
res.write(response, 'UTF-8');
res.end();
callback(null, req, res, targetUrl);
return;
}
}
});