を働いていないのResponse.Write(...)は、私は次のNode.jsのコード(傍受プロキシ)している:あなたが見ることができるように、私は、カスタムのNode.jsをのNode.js -
var http = require('http');
var eamorr=require('./Eamorr_addon/out/Release/Eamorr_addon');
http.createServer(function(request,response){
var proxy=http.createClient(80,request.headers['host'])
var proxy_request=proxy.request(request.method,request.url,request.headers);
proxy_request.addListener('response',function(proxy_response){
proxy_response.addListener('data',function(chunk){
var arr=eamorr.analyse(chunk);
for(var i=0;i<arr.length;i++){
//console.log(arr[i]+"\n\n");
response.write(arr[i]);
}
response.write("2"); //this doesn't get written!
});
proxy_response.addListener('end',function(){
response.end();
});
response.writeHead(proxy_response.statusCode,proxy_response.headers);
});
request.addListener('data',function(chunk){
proxy_request.write(chunk,'binary');
});
request.addListener('end',function(){
proxy_request.end();
});
}).listen(10002);
を持っていますaddonには文字列の配列を返す関数analyse()
が付いています。私はこの配列をループして結果を書いています。
私が抱えている問題は、「2」が書かれていないことです。
私は本当にここにこだわっていて、誰かが助けることができるかどうか疑問に思っていましたか?
Node.jsドキュメントによれば、「初めてresponse.write()が呼び出されると、バッファリングされたヘッダー情報と最初の本文がクライアントに送信されます。 write()が呼び出されると、Nodeはあなたがデータをストリーミングすると仮定し、それを別々に送信します。つまり、応答はボディの最初のチャンクまでバッファされます。
response.write("2")
の後にresponse.end()
に貼り付けを試みましたが、それでも機能しません。
出力をフラッシュする方法、またはストリーミングをオフにする方法はありますか?
for-loopは、配列要素を応答に書き込むことはどうですか?それは、例えば大きな配列で正しく動作しますか? – supertopi
ねえ、ちょうど私の昼食から戻ってきた。それは小さな配列(私は小さい配列を返すだけです)で正しく動作します。 – Eamorr
エンコーディング 'バイナリ'は使用しないでください。それが問題の原因であるかどうかは分かりません。 – loganfsmyth