var http = require('http');
var readline = require('readline');
var url = 'http://cnodejs.org/topic/581b2502e90cfbec054d763f';
function get(){
var req = http.get(url, function(res){ //这里res其实是一个IncomingMessage对象
res.setEncoding('utf-8');
var rl = readline.createInterface({input:res});
rl.on('line',function(line){
var patt = /浏览$/;
if(patt.exec(line)){
console.log(line.trim());
//以下均无法中止传输
res.socket.end();
res.socket.pause();
res.socket.destroy();
req.abort();
}
console.log(line);
});
}).on('error',function(e){
console.log(e);
});
}
get();
一段很简单的代码,只是获取页面中的浏览次数,预期的目标是得找到有浏览次数的行之后就中断数据的传输,可是我竟然找不到一种办法能够实现 在回调中res其实是一个IncomingMessage对象,看API,这个对象中是没有能够中断连接的方法的 但IncomingMessage提供了获取原始socket的方法,原始socket无论end()还是destroy()都无法中止,依然输出了整个网页! 那么我再找找,发现http.get()会返回一个 http.ClientRequest,虽然不太像能中断连接,但还是试了试它的abort(),果然是无法中断的 那么问题来了: 怎么在数据传输的过程中得到了自己想要的数据时,中止网络连接?