node.js - 如何在我的本地计算机上接收来自互联网上远程设备的 http 请求?

标签 node.js server

我正在开发一个应用程序来学习服务器端。我创建了一个 Node js 服务器和一个 Android 应用程序。

工作流程⚙️(我想要实现的目标):- WorkFlow

我的电脑本地IP:192.168.0.120

在我正在监听的端口上:8443

整个事情在本地主机中运行良好:因为我正在发送 POST 请求。单击我的应用上的按钮时在 192.168.0.120:8443 上。

但这仅在我连接到 WiFi 时才有效,而不是在连接到 SIM 网络或远程位置时有效。

所以我的问题是通过单击应用程序中的按钮向哪里发送请求(肯定无法在 192.168.0.120:8443 上发送,因为我无法连接到 wifi)?

server.js 文件

    let http = require('http')
    
    let server = http.createServer(function (req, res) {
        if (req.method === 'POST') {
            console.log('sleeping..💤💤')
            var ffi = require('ffi-napi')
            var powrprof = ffi.Library('powrprof.dll', {
                SetSuspendState: ['int', ['int', 'int', 'int']],
            })
    
            function invokeStandby() {
                powrprof.SetSuspendState(0, 0, 0)
            }
            // invokeStandby()
        } else {
            res.writeHead(405, { 'Content-Type': 'text/plain' })
            res.end('Method Not Allowed\n')
        }
    })
    
    server.listen(8443)

    console.log('Server running on port 8443')

最佳答案

这更像是一个网络问题而不是 Node 问题。您必须能够配置网关路由器/防火墙才能使其正常工作。此外,您的 ISP 必须允许您正在监听的端口上的入站连接。幸运的是,这可能不会成为问题,而只是需要注意的事情。

首先,您需要配置路由器以进行端口转发。端口转发会将连接转换为路由器上的特定端口,然后将该请求转发到本地网络上特定内部 IP 地址上的同一端口。如果您的路由器有防火墙,您可能还需要创建一条规则以允许该端口上的流量通过。大多数家庭路由器不需要这样做。

设置网关路由器后,您需要找出路由器的外部 IP 地址。要查找外部 IP 地址,您可以访问类似 https://whatismyipaddress.com/ 的网站。 。将此 IP 地址和端口提供给您想要连接到服务器的任何人。

大多数 ISP 都会动态分配 IP 地址,因此您必须检查您的 IP 地址是否不时发生变化。

一旦完成所有设置并将端口转发到本地开发计算机,您就可以启动 Node 服务器并开始查看请求。

请注意,将您的计算机暴露在互联网上存在一些风险。只需确保您不信任服务器的输入,并在不需要时关闭端口转发。

如果您无法进行任何路由器配置,请查看 ngrok。这几乎可以通过任何 NAT 路由器或防火墙。请注意,免费版本限制为每分钟 40 个连接。

关于node.js - 如何在我的本地计算机上接收来自互联网上远程设备的 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70707308/

相关文章:

node.js - 我应该在整个服务器运行时保留 Sequelize 实例吗?

javascript - AngularJS - 预期响应包含一个对象,但得到一个数组

node.js - 如果对象字段在 MongoDB/Mongoose 中是唯一的,则将对象添加到数组中

node.js - Express JS : TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. 收到类型号

python-3.x - Python套接字服务器: can't compare input from client

bash - 如何停止当前在云形成中运行的所有堆栈操作?

node.js - NODEJS dns.lookup

ios - 在 swift 3 perfect 2.0 中使用调度队列

javascript - 将 url 传递给模块

vb.net - URL请求的返回值