Node.js,基于 socket-io 的一对一聊天引擎在 LOCAL 上工作正常,但在 运行 在不同的笔记本电脑上使用 ngrok 时无法工作

Node.js, socket-io based one to one chat engine working fine on LOCAL but not working when running on different laptops using ngrok

我在聊天服务器上工作,它在本地工作正常,但每当我尝试 运行 使用 ngrok 的项目时,我和我的朋友就无法聊天。

var socket = io('http://localhost:7777', {
    query: {
        username: '<%= user %>'
      }
  });

谁能指导我如何制作这个public?因为每次连接到互联网时IP地址都会改变。

var app = express();

const chatServer = require('http').createServer(app);

chatServer.listen(7777);

我是第一次在 node.js 工作

如果您的服务器和客户端确实在本地工作,正如您提到的,当 运行 服务器和客户端在互联网上的不同机器上时,您将面临一些额外的挑战:

  • 您的客户端需要知道服务器的外部 IP 地址。所以你需要一些方法让它在客户端可配置,例如使用命令行参数。
  • 如果您的服务器的本地 IP 地址发生变化,您需要将其配置为使用静态 IP 地址,而不是使用 DHCP。
  • 您可能需要在服务器端的互联网路由器上设置端口转发。您需要告诉您的路由器将端口 7777 上的所有流量转发到您的服务器。
  • 您可能需要配置防火墙以允许端口 7777 上的流量。
  • 您的 ISP 可以并且会偶尔更改您的外部 IP 地址。你对此无能为力。这就是为什么通常使用静态的(域名)名称访问 Internet 上的服务器。