背景
在Node.js中,server.on()方法用于监听服务器对象上发出的事件,并且为每个事件提供一个回调函数来处理。这些回调函数的参数取决于所监听的事件类型。
对于server.on(‘listening’, callback),回调函数没有参数,因为listening事件在服务器开始监听指定端口时触发,并且不传递任何特定于该事件的数据。
但是,对于其他事件,如connection,回调函数会接收到与事件相关的参数。
详细描述
以下是一些常见事件及其回调函数参数:
connection 事件
当TCP连接建立时触发。回调函数接收一个参数,即与客户端之间的socket对象。
server.on('connection', (socket) => {
console.log('客户端连接已建立。', socket.remoteAddress, socket.remotePort);
});
request 事件
对于HTTP服务器,当接收到请求时触发。回调函数接收两个参数:一个IncomingMessage对象(作为请求)和一个ServerResponse对象(用于发送响应)。
const http = require('http');
const server = http.createServer();
server.on('request', (req, res) => {
console.log(`接收到请求:${req.method} ${req.url}`);
res.writeHead(200);
res.end('Hello HTTP!\n');
});
close 事件
当服务器发生错误时触发。回调函数接收一个Error对象作为参数。
server.on('close', () => {
console.log('服务器已关闭。');
});
listening 事件
如前面所述,这个事件在服务器开始监听指定端口时触发,并且没有特定的参数。
server.on('listening', () => {
const address = server.address();
console.log(`服务器开始接受连接在 ${address.address}:${address.port}`);
});
总结
确保你监听的事件与你正在使用的服务器类型(例如HTTP服务器或TCP服务器)相匹配,并且正确处理回调函数的参数。在大多数情况下, Node.js文档 会详细说明每个事件及其回调函数的参数。