Node.js 通过事件发射器进行HTTP分析

示例

在HTTP服务器代码(例如server.js)中:

const EventEmitter = require('events')
const serverEvents = new EventEmitter()

// 设置HTTP服务器
const http = require('http')
const httpServer = http.createServer((request, response) => {
  // 处理请求...
  // 然后发出有关发生的事件
  serverEvents.emit('request', request.method, request.url)
});

// 暴露事件发射器
module.exports = serverEvents

在主管代码中(例如supervisor.js):

const server = require('./server.js')
// 由于服务器导出了事件发射器,因此我们可以监听它的变化:
server.on('request', (method, url) => {
  console.log(`Got a request: ${method} ${url}`)
})

每当服务器收到请求时,它将发出一个称为request主管正在监听的事件,然后主管可以对该事件做出反应。