2014-07-07 27 views
0

我是一个节点新手,并且对http.ClientRequest中的套接字事件有疑问。该文件说在http.ClientRequest中调用事件'套接字'

Event: 'socket'# 
function (socket) { } 

Emitted after a socket is assigned to this request. 

网址:nodejs documentation

我有以下几点:

var req = http.request(requestOptions, function(res) { 
    util.puts('STATUS: ' + res.statusCode); 
    util.puts('HEADERS: ' + JSON.stringify(res.headers)); 

    res.setEncoding('utf-8'); 
    res.on('data', function(chunk) { 
     util.puts('BODY: ' + chunk); 
    }); 
}); 

req.on('socket', function(sock) { 
    util.puts('req.on socket event called'); 
    util.puts(sock.address()); 
    util.puts('Remote address: ' + sock.remoteAddress + ':' + sock.remotePort); 

}); 

我试图找出函数(插座){}。上述插座事件有 'util.puts(sock.address());''util.puts('Remote address: ' + sock.remoteAddress + ':' + sock.remotePort);'

> null 
> Remote address: undefined:undefined 

我怎样才能读取远程地址下面的输出?

回答

0

在分配套接字时,地址尚未分配。试试这个:

req.on('socket', function(sock) { 
    sock.on('connect', function(connection) { 
    util.puts('req.on socket event called'); 
    util.puts(util.inspect(sock.address())); 
    util.puts('Remote address: ' + sock.remoteAddress + ':' + sock.remotePort); 
    }); 
}); 
+0

在connectedSock.address()上得到一个错误。 util.puts(util.inspect(connectedSock.address())); \t \t^ TypeError:不能调用未定义的 – extensa5620

+0

的方法'地址'抱歉,编辑修复。 – glortho

+0

谢谢!有用! – extensa5620