私はNode.jsをかなり使い慣れているので、私に負担してください。Node.js - コールバック以外のコールバック?
私はプロキシサーバーを持っていて、HTTPボディパケットを傍受したいと思います。これらのパケットはzeromqを介してNode.js(Cプログラム)と応答(変更されたパケット)以外の別のプロセスに送信され、プロキシからの応答として書き戻されなければなりません。私は意味があると思う。私はここで
にこだわっているビットでコードをコメントしました
は私のjavascriptのコードです:
var http = require('http');
var util=require('util');
var net=require('net');
var context = require('zmq');
// socket to talk to server
util.puts("Connecting to server...");
var requester=context.createSocket('req');
requester.on("message",function(reply) {
util.puts("Received reply"+reply.toString());
//response.write(reply,'binary'); //how do I pick up the `response` variable inside the proxy callback and write with it?!
})
requester.connect("ipc://myfd.ipc")
process.on('SIGINT', function() {
requester.close()
})
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){
//util.puts(chunk);
requester.send(chunk); //ok, my C program can read chunks
response.write(chunk,'binary'); //I don't want to do this - I want to write the response of `requester.send(chunk)`
});
proxy_response.addListener('end',function(){
//util.puts("end");
response.end();
});
response.writeHead(proxy_response.statusCode,proxy_response.headers);
});
request.addListener('close',function(){
//util.puts("close");
});
request.addListener('data',function(chunk){
//util.puts("data");
proxy_request.write(chunk,'binary');
});
request.addListener('end',function(){
//util.puts("end");
proxy_request.end();
});
}).listen(8080);
私は誰かが役立つことを願って...
'request.send()'渡されるコールバックパラメータを許可しませんか?もしそうなら、それはあなたがそれをする方法です。 – Pointy
Hmmm。私はあなたが何を意味するか分からない。私はドキュメンテーションを見つけ、それがあるかどうかを調べる必要があります。 – Eamorr
requester.send(chunk、x)の2番目のパラメータxは、整数(フラグ)でなければなりません。 – Eamorr