关于node的http模块

var http = require('http');

/**
 * 创建服务器的两种写法,第一种写法如下
 * 由于server已经继承了EventEmitter的事件功能,所以可以使用高级函数编写方式监控事件
 * @param {Function} request event
*/
var server = http.createServer(function(req,res)
{
    //这里的req为http.serverRequest
    res.writeHeader(200,{'Content-Type':'text/plain'});
    res.end('hello world');
});


/**
 * 说明:创建服务器的第二种写法
 * 有关server对象的事件监听
 * @param {Object} req 是http.IncomingMessag的一个实例,在keep-alive连接中支持多个请求
 * @param {Object} res 是http.ServerResponse的一个实例
 */
var server = new http.Server();
server.on('request',function(req,res){
    res.writeHeader(200,{'Content-Type':'text/plain'});
    res.end('hello world');
});

/**
 * 说明:新的TCP流建立时触发。 socket是一个net.Socket对象。 通常用户无需处理该事件。
 * 特别注意,协议解析器绑定套接字时采用的方式使套接字不会触发readable事件。 还可以通过request.connection访问socket。
 * @param {Object} socket
 */
server.on('connection',function(socket){});

/**
 * 源API: Event: 'close'
 * 说明:关闭服务器时触发
 */
server.on('close',function(){});

/**
 * 说明:每当收到Expect: 100-continue的http请求时触发。 如果未监听该事件,服务器会酌情自动发送100 Continue响应。
 * 处理该事件时,如果客户端可以继续发送请求主体则调用response.writeContinue, 如果不能则生成合适的HTTP响应(例如,400 请求无效)
 * 需要注意到, 当这个事件触发并且被处理后, request 事件将不再会触发.
 * @param {Object} req
 * @param {Object} req
 */
server.on('checkContinue',function(req,res){});

/**
 * 说明:如果客户端发起connect请求,如果服务器端没有监听,那么于客户端请求的该连接将会被关闭
 * @param {Object} req 是该HTTP请求的参数,与request事件中的相同。
 * @param {Object} socket 是服务端与客户端之间的网络套接字。需要自己写一个data事件监听数据流
 * @param {Object} head 是一个Buffer实例,隧道流的第一个包,该参数可能为空。
 */
server.on('connect',function(req,socket,head){});

/**
 * 说明:这个事件主要是对HTTP协议升级为其他协议后的事件监听,如果服务器端没有监听,那么于客户端请求的该连接将会被关闭
 * @param {Object} req 是该HTTP请求的参数,与request事件中的相同。
 * @param {Object} socket 是服务端与客户端之间的网络套接字。需要自己写一个data事件监听数据流
 * @param {Object} head 是一个Buffer实例,升级后流的第一个包,该参数可能为空。
 */
server.on('upgrade',function(req,socket,head){});

/**
 * 说明:如果一个客户端连接触发了一个 'error' 事件, 它就会转发到这里
 * @param {Object} exception
 * @param {Object} socket
 */
server.on('clientError',function(exception,socket){});

/**
 * 源API:server.listen(port, [hostname], [backlog], [callback])
 * 说明:监听一个 unix socket, 需要提供一个文件名而不是端口号和主机名。
 * @param {Number} port 端口
 * @param {String} host 主机
 * @param {Number} backlog 等待队列的最大长度,决定于操作系统平台,默认是511
 * @param {Function} callback 异步回调函数
 */
//server.listen(3000,'localhost',100,function(){});

/**
 * 源API:server.listen(path, [callback])
 * 说明:启动一个 UNIX 套接字服务器在所给路径 path 上监听连接。
 * 可能用处:多路径或渠道数据来源监听分隔
 * @param {String} path
 * @param {Function} callback
 */
//server.listen('path',function(){})

/**
 * 源API:server.listen(handle, [callback])
 * 说明:Windows 不支持监听一个文件描述符。
 * @param {Object} handle 变量可以被设置为server 或者 socket
 * @param {Function} callback
 */
//server.listen({},function(){});

/**
 * 说明:最大请求头数目限制, 默认 1000 个. 如果设置为0, 则代表不做任何限制.
 * @type {number}
 */
server.maxHeadersCount = 1000;

/**
 * 源API:server.setTimeout(msecs, callback)
 * 说明:为套接字设定超时值。如果一个超时发生,那么Server对象上会分发一个'timeout'事件,同时将套接字作为参数传递。
 * 设置为0将阻止之后建立的连接的一切自动超时行为
 * @param {Number} msecs
 * @param
 */
server.setTimeout(1000,function(){});

/**
 * 说明:一个套接字被判断为超时之前的闲置毫秒数。 默认 120000 (2 分钟)
 * @type {number}
 */
server.timeout = 120000;

/**
 * 说明:这里的主机将是本地
 * @param {Number} port 端口
 * @param {Function} callback 异步回调函数
 */
server.listen(3000,function(){
   console.log('Listen port 3000');
});

 

posted @ 2016-12-01 16:25  大饼脸  阅读(139)  评论(0编辑  收藏  举报