Nodejs request 使用的端口

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

Nodejs request 使用的端口

express 应用跑在 3001 端口上,有个定时任务会定时去请求对方的 ip:7021 端口,使用的是 request.get 。我的问题是 request 在发送这个 get 请求的时候,使用本地的端口是哪个端口?我理解的是 3001 端口,因为他是跑在应用上。 问题是:我打开了 3002 的进出口,结果就是请求不到数据,尴尬.jpg. 如果我打开进出口 all port 则会请求成功,我现在闹不清 request 发送请求的时候到底使用了哪个端口?请大神指点。


4 回复

TCP 请求的本地端口是随机的


随机端口,除非事先 bind

请问怎么绑定呢?

在Node.js中,request模块(通常指requestrequest-promise等第三方库)本身并不直接处理服务器端口。端口通常由你用来创建HTTP服务器的库(如httpexpress)来配置。不过,当你使用request模块向某个服务器发送请求时,你需要指定目标服务器的端口(如果它不是默认的HTTP端口80或HTTPS端口443)。

以下是一个使用request-promise库发送HTTP请求并指定端口的示例代码:

const rp = require('request-promise');

// 目标URL,包括端口号
const options = {
    uri: 'http://localhost:3000/api/data', // 假设服务器运行在本地3000端口
    method: 'GET',
    json: true // 自动解析JSON响应
};

rp(options)
    .then(response => {
        console.log('Response:', response);
    })
    .catch(err => {
        console.error('Error:', err);
    });

在这个例子中,我们使用了request-promise库来发送一个GET请求到http://localhost:3000/api/data。注意uri字段包含了目标服务器的端口号(3000)。

如果你的Node.js应用本身是一个服务器,并且你想监听特定端口,你应该使用httpexpress等库来配置。例如,使用express

const express = require('express');
const app = express();
const port = 3000;

app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}/`);
});

这段代码会让Express服务器监听3000端口。

回到顶部