Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

http 模块 -- 服务器 #12

Open
mt51 opened this issue Oct 25, 2018 · 0 comments
Open

http 模块 -- 服务器 #12

mt51 opened this issue Oct 25, 2018 · 0 comments

Comments

@mt51
Copy link
Owner

mt51 commented Oct 25, 2018

http 模块 -- 服务器

http模块提供了简单的创建服务器的方法。

const http = require('http')

const server = http.createServer(() => {
})

server.listen(3000)

这样就完成了一个服务器的创建。

http.createServer([options][,requestListene])

  • options <Object>

    • IncomingMessage 指定要使用的 IncomingMessage 类,用于拓展原始的IncomingMessage类. 缺省: IncomingMessage.
    • ServerResponse 指定要使用的 ServerResponse类, 用于拓展原始的ServerResponse类. 缺省: ServerResponse.
  • requestListener 回调函数,会自动添加到'request'事件上

返回一个新的 http.Server实例。

http.Server类

http.Server类继承于net.Server

常用事件
'request'事件
  • request 请求对象
  • response 响应对象

每次接收到一个请求时触发。 注意,每个连接可能有多个请求(在 HTTP keep-alive 连接的情况下)。

'connection' 事件
  • request HTTP 请求,同 'request' 事件。
  • socket 服务器与客户端之间的网络 socket。
  • head 流的第一个数据包,可能为空。

每当客户端发送 HTTP CONNECT 请求时触发。 如果该事件未被监听,则发送 CONNECT 请求的客户端会关闭连接。

当该事件被触发后,请求的 socket 上没有 'data' 事件监听器,这意味着需要绑定 'data' 事件监听器,用来处理 socket 上被发送到服务器的数据

'close' 事件

当服务器关闭的时候触发

'upgrade' 事件
  • request HTTP 请求,同 'request' 事件。
  • socket 服务器与客户端之间的网络 socket。
  • head流的第一个数据包,可能为空。

每当客户端发送 HTTP upgrade 请求时触发。 如果该事件未被监听,则发送 upgrade 请求的客户端会关闭连接。

当该事件被触发后,请求的 socket 上没有 'data' 事件监听器,这意味着需要绑定 'data' 事件监听器,用来处理 socket 上被发送到服务器的数据。

server.close([callback])

停止服务端接受新的连接

server.listen([port][,callback])

开启HTTP服务器监听连接

server.listening

返回一个boolean值,表示服务器是否正在监听

server.maxHeadersCount

限制请求头的最大数量,默认为 2000。如果为0,则不做限制

server.setTimeout([msecs][, callback])

设置socket 超时时间,默认是120000(两分钟)。 如果发生超时,则触发服务器对象的 'timeout' 事件,并传入 socket 作为一个参数

server.timeout

可以用来获取socket超时时间或者是设置socket超时时间。当设置为0,表示禁用超时行为。

// 例子
const http = require('http')

const server = http.createServer()

server.on('request', (req, res) => {
  console.log(req.url)
  if (req.url === '/ping') {
    res.write('pong')
    res.end()
  } else {
    res.statusCode = 400
    res.end()
  }
})

server.listen(3000, () => {
  console.log('server is running at localhost:3000')
})

server.on('error', error => {
  console.log(error)
})

server.timeout = 1000

参考

node中文文档 http模块

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant