Node.js,基于 socket-io 的一对一聊天引擎在本地运行良好,但在使用 ngrok 在不同笔记本电脑上运行时无法运行
Posted
技术标签:
【中文标题】Node.js,基于 socket-io 的一对一聊天引擎在本地运行良好,但在使用 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 【发布时间】:2020-06-03 15:58:51 【问题描述】:我正在使用聊天服务器,它在本地运行良好,但每当我尝试使用 ngrok 运行项目时,我和我的朋友都无法聊天。
var socket = io('http://localhost:7777',
query:
username: '<%= user %>'
);
谁能指导我如何公开?因为每次连接到互联网时IP地址都会改变。
和
var app = express();
const chatServer = require('http').createServer(app);
chatServer.listen(7777);
我是第一次在 node.js 中工作
【问题讨论】:
【参考方案1】:如果您的服务器和客户端确实在本地工作,正如您所提到的,那么在 Internet 上的不同机器上运行服务器和客户端时会遇到一些额外的挑战:
您的客户端需要知道服务器的外部 IP 地址。所以你需要一些方法让它在客户端上可配置,例如使用命令行参数。 如果服务器的本地 IP 地址发生变化,您需要将其配置为使用静态 IP 地址而不是使用 DHCP。 您可能需要在服务器端的 Internet 路由器上设置端口转发。您需要告诉路由器将端口 7777 上的所有流量转发到您的服务器。 您可能需要将防火墙配置为允许端口 7777 上的流量。 您的 ISP 可以并且会偶尔更改您的外部 IP 地址。你对此无能为力。这就是为什么互联网上的服务器通常使用它们的(域名)来访问,这是静态的。【讨论】:
以上是关于Node.js,基于 socket-io 的一对一聊天引擎在本地运行良好,但在使用 ngrok 在不同笔记本电脑上运行时无法运行的主要内容,如果未能解决你的问题,请参考以下文章
使用 node.js、socket.io 和 redis 的一对一聊天应用程序
如何使用 Node JS 服务器在 Socket.io 中进行一对一聊天?