Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

nodejs竟然无法中止http请求数据的传输

$
0
0
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(),果然是无法中断的 那么问题来了: 怎么在数据传输的过程中得到了自己想要的数据时,中止网络连接?


Viewing all articles
Browse latest Browse all 14821

Trending Articles