Nodejs中关于http中connection事件

Nodejs中关于http中connection事件

看文档里有这么一句描述: Event: ‘connection’ 事件:'connection’ function (stream) { }

When a new TCP stream is established. stream is an object of type net.Stream. Usually users will not want to access this event. The stream can also be accessed at request.connection.

当一个新的TCP流建立后触发此事件。stream是一个net.Stream类型的对象,通常用户不会使用这个事件。参数stream也可以在request.connection中获得。

看文字的意思就是说有一个连接就会进入connection事件,可是在代码里应该如何写呢,不是很明白。哪个高人能给贴个列子


3 回复

Node.js 中关于 HTTP 中 connection 事件

在 Node.js 的 HTTP 模块中,connection 事件可以用来处理新的 TCP 连接。虽然大多数情况下我们不需要直接操作这个事件,但它在某些特定场景下可能会非常有用,比如需要对底层的网络连接进行更细粒度的控制。

示例代码

下面是一个简单的例子,展示了如何使用 connection 事件:

const http = require('http');

// 创建一个 HTTP 服务器
const server = http.createServer();

// 监听 connection 事件
server.on('connection', (stream) => {
    console.log('New TCP connection established.');
    
    // 可以在这里添加一些处理逻辑,例如记录连接信息
    stream.on('data', (data) => {
        console.log(`Received data: ${data}`);
    });

    stream.on('end', () => {
        console.log('Connection closed.');
    });
});

// 绑定服务器到指定端口
server.listen(3000, () => {
    console.log('Server listening on port 3000');
});

解释

  1. 创建 HTTP 服务器

    const server = http.createServer();
    

    使用 http.createServer() 方法创建一个 HTTP 服务器实例。

  2. 监听 connection 事件

    server.on('connection', (stream) => {
        console.log('New TCP connection established.');
    });
    

    使用 server.on('connection', callback) 方法来监听 connection 事件。每当一个新的 TCP 连接被建立时,这个回调函数会被调用,并传入一个 stream 对象。

  3. 处理连接数据

    stream.on('data', (data) => {
        console.log(`Received data: ${data}`);
    });
    

    connection 事件的回调函数中,你可以监听 data 事件来处理从客户端发送的数据。

  4. 绑定服务器到端口

    server.listen(3000, () => {
        console.log('Server listening on port 3000');
    });
    

    最后,使用 server.listen(port, callback) 方法将服务器绑定到指定的端口(例如 3000),并启动服务器。

通过这种方式,你可以在 Node.js 应用程序中监听和处理 HTTP 服务器上的新连接。希望这个示例对你有所帮助!


基于事件的,使用http.on('connection');来监听

在Node.js中,http.Server 对象会触发 'connection' 事件,每当有新的TCP连接建立时,该事件就会被触发。这个事件可以用来处理底层的TCP连接,但大多数情况下,我们更倾向于直接处理HTTP请求。

以下是一个简单的例子,展示了如何监听 'connection' 事件,并打印出相关的TCP流信息:

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
});

server.on('connection', (stream) => {
  console.log('New connection established.');
  // 你可以在这里对stream进行一些操作
  stream.on('end', () => {
    console.log('Connection ended.');
  });
});

server.listen(3000, () => {
  console.log('Server running at http://127.0.0.1:3000/');
});

在这个例子中,我们创建了一个HTTP服务器,监听3000端口。每当有新的连接建立时,'connection' 事件会被触发,传入的 stream 参数表示新的TCP连接。我们可以在这个事件处理器中添加一些逻辑来处理这个连接。

需要注意的是,'connection' 事件更多地用于处理底层TCP连接的细节,而不是HTTP请求本身。如果你只是想处理HTTP请求,那么通常不需要直接处理这个事件,而是直接在 http.createServer 的回调函数中处理请求即可。

回到顶部