我正在开发一个应用程序来学习服务器端。我创建了一个 Node js 服务器和一个 Android 应用程序。
我的电脑本地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/