首页 > net包怎么判断服务器数据发送完毕?

net包怎么判断服务器数据发送完毕?

下面代码为利用nodejsnet包发起http请求,这种方法怎么判断服务器响应结束呢?暂时想到是使用setTimeout方法,4s后结束tcp连接。但是这显然不是一个好的解决方法。

var fn = function (path,callback) {
    const socket = net.createConnection(80,'jandan.net');
    socket.write( // 发送http请求报文
        'GET '+path+' HTTP/1.1\r\n'+
        header
    );
    // socket.setTimeout(4000,function () {
    //     socket.end();
    // });
    socket.setEncoding('utf-8');
    var html = '';
    socket.on('data',function (chunk) {
        html+=chunk;
    });

    socket.on('end',function () {
        callback(html);
    });
}

然后是直接使用http包,可以优雅的监听resend事件,那请问底层如何实现将一次tcp连接,抽象成requestresponse的呢,或者说我如何使用net包实现同样的效果呢?
实际上这里的resIncomingMessage类型,
https://nodejs.org/dist/latest-v4.x/docs/api/http.html#http_class_http_incomingmessage

var gn = function (path,callback) {
    http.request(
        {
            hostname: "jandan.net",
            path: path
        },
        function (res) {
            var html = '';
            res.setEncoding('utf-8');
            res.on('data',function (chunk) {
                html+=chunk;
            });
            res.on('end',function () {
                callback(html);
            })
        }
    ).end();
};
【热门文章】
【热门文章】