【abort事件】
当请求已被客户端终止时触发。 该事件仅在首次调用 abort() 时触发
【aborted事件】
当请求已被服务器终止且网络 socket 已关闭时触发
【connect事件】
response <http.IncomingMessage>
socket <net.Socket>
head <Buffer>
当服务器响应CONNECT请求时触发。 如果该事件未被监听,则接收到CONNECT方法的客户端会关闭连接
【continue事件】
当服务器发送了一个 100 Continue 的 HTTP 响应时触发,通常是因为请求包含 Expect: 100-continue。 这是客户端将要发送请求主体的指令
【response 事件】
response <http.IncomingMessage>
当请求的响应被接收到时触发。 该事件只触发一次
【socket 事件】
当 socket 被分配到请求后触发
【upgrade事件】
response <http.IncomingMessage>
socket <net.Socket>
head <Buffer>
每当服务器响应 upgrade 请求时触发。 如果该事件未被监听,则接收到 upgrade 请求头的客户端会关闭连接
【request.abort()】
标记请求为终止。 调用该方法将使响应中剩余的数据被丢弃且 socket 被销毁
【request.aborted】
如果请求已被终止,则该属性的值为请求被终止的时间,从 1 January 1970 00:00:00 UTC 到现在的毫秒数
【request.end([data][, encoding][, callback])】
data <string> | <Buffer>
encoding <string>
callback <Function>
结束发送请求。 如果部分请求主体还未被发送,则会刷新它们到流中。 如果请求是分块的,则会发送终止字符 '0\r\n\r\n'。
如果指定了 data,则相当于调用 response.write(data, encoding) 之后再调用 request.end(callback)。
如果指定了 callback,则当请求流结束时会被调用
【request.flushHeaders()】
刷新请求头
出于效率的考虑,Node.js 通常会缓存请求头直到 request.end() 被调用或第一块请求数据被写入。 然后 Node.js 会将请求头和数据打包成一个单一的 TCP 数据包。通常那是期望的(因为它节省了 TCP 往返),除非第一个数据块很长时间之后才被发送。 request.flushHeaders() 可以绕过最优选择并提前开始请求
【request.setNoDelay([noDelay])】
一旦 socket 被分配给请求且已连接,socket.setNoDelay() 会被调用
【request.setSocketKeepAlive([enable][, initialDelay])】
enable <boolean>
initialDelay <number>
一旦 socket 被分配给请求且已连接,socket.setKeepAlive() 会被调用
【request.setTimeout(timeout[, callback])】
timeout <number> 请求被认为是超时的毫秒数。
callback <Function> 可选的函数,当超时发生时被调用。等同于绑定到 timeout 事件
返回 request
一旦 socket 被分配给请求且已连接,socket.setTimeout() 会被调用
【request.write(chunk[, encoding][, callback])】
chunk <string> | <Buffer>
encoding <string> encoding 参数是可选的,仅当 chunk 是一个字符串时才有效。默认为 'utf8'
callback <Function> callback 参数是可选的,当数据块被刷新时调用
返回 request
发送请求主体的一个数据块。 通过多次调用该方法,一个请求主体可被发送到一个服务器,在这种情况下,当创建请求时,建议使用 ['Transfer-Encoding', 'chunked'] 请求头
Server
大多数nodejs开发者都是冲着开发web server的目的选择了nodejs。借助http模块,可以几行代码就搞定一个超迷你的web server
【http.createServer([requestListener])】
该方法创建并返回一个HTTP服务器对象
requestListener表示监听到客户端连接的回调函数
var server = http.createServer(function(req,res){});
【server.listen(port[, hostname][, backlog][, callback])】
该方法在指定的的端口和主机名上开始接收连接
port表示要监听的端口,若不设置,则端口由系统自动分配
若忽略主机名hostname,服务器将会接收指向任意IPv4的地址(INADDR_ANY)
若监听一个unix socket,需要提供一个文件名而不是主机名和端口
若积压量backlog为等待连接队列的最大长度,即允许多少个客户端在队列中存在。实际的长度由操作系统的sysctl设置决定。默认参数值为511
最后一个参数callback是异步函数,会作为事件监听器添加到listening事件
【request事件】
当有客户端发送请求到该主机和端口的请求的时候触发
参数request : http.IncomingMessage的一个实例,通过他我们可以获取到这次请求的一些信息,比如头信息,数据等
参数response : http.ServerResponse的一个实例,通过他我们可以向该次请求的客户端输出返回响应
server.on('request',function(request,response){
console.log('收到信息');
})
由于createServer()的参数是requestListener,所以可以把request事件中的回调函数写为createServer()的参数
var server = http.createServer(function(req,res){
console.log('收到信息');
});
于是,利用上面几个方法就可以创建一个简单的server
var http = require('http');
var server = http.createServer(function(req,res)