设为首页 加入收藏

TOP

nodeJS之HTTP(二)
2017-10-13 10:50:15 】 浏览:6973
Tags:nodeJS HTTP

【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 <net.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])】

noDelay <boolean>

  一旦 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事件

server.listen(5000);

【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)
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇如何通过JS实现简单抖动效果 下一篇如何实现冒泡排序

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目