2017-01-12 7 views
0

http-proxy를 통해 프록시를 사용하고 싶습니다. 수신 데이터를 기록 할 수 있지만 프록시에서 데이터를 보낼 수 없습니다.. 나는 어떻게 할 수 있니?노드 http-proxy를 통해 websocket 트래픽 데이터를 기록하는 방법

#!/usr/bin/env node 

var wstarget = 'ws://localhost:8080/?r='+(Date.now()/1000 | 0); 

var httpProxy = require('http-proxy'); 
var http = require('http'); 

var proxy = httpProxy.createProxyServer({}); 

proxy.on('open', function (proxySocket) { 
proxySocket.on('data', function (data) { 
    //console.log('\n'+data); 
    console.log('',data); // Just log the receive data! Can't get the Send data? 
}); 
}); 

var server = http.createServer(); 

server.on('upgrade', function (req, socket, head) { 
    console.log("Proxying websocket connection to "+wstarget); 
    proxy.ws(req, socket, head, { 
    target: wstarget, 
    changeOrigin: true, 
    ws: true}); 
}); 

server.listen(8881); 

답변

0

답변을 찾았습니다.

... 

var WsParser = require('simples/lib/parsers/ws'); // npm install simples 

proxy.on('open', function (proxySocket) { 
proxySocket.on('data', function (data) { 
    console.log('Down:'+data); 
    console.log('',data); 
}); 

}); 

proxy.on('proxyReqWs', function(proxyReq, req, socket, options, head) { 

    var parser = new WsParser(0, false); 

    socket.pipe(parser); 

    parser.on('frame', function (frame) { 
     // handle the frame 
     console.log('Up:',frame); 
     console.log('Up data:'+frame.data); 
     /* 
     The structure of a frame: 
     { 
      data: buffer, 
      fin: boolean, 
      length: int, 
      masked: boolean, 
      opcode: int 
     } 
     */ 
    }); 

}); 

...