为了账号安全,请及时绑定邮箱和手机立即绑定

Node.js连接仅适用于本地主机

/ 猿问

Node.js连接仅适用于本地主机

郎朗坤 2019-11-13 15:00:12

我使用Connect编写了一个小型的node.js应用程序,该应用程序提供了一个网页,然后将其定期发送。它还接受用户观察并将其记录到磁盘文件中。


只要我在本地主机上,它就可以正常工作,但是我无法在同一Intranet上让其他计算机看到它。我正在使用端口3000,但是更改为端口8080或80并没有帮助。


这是我用来建立连接的代码:


    

var io = require('socket.io'),

  connect = require('connect');


var app = connect().use(connect.static('public')).listen(3000);

var chat_room = io.listen(app);

如上所述,我尝试将端口号更改为8080或80,但没有发现任何区别,因此我认为这不是防火墙问题(但是我可能错了)。在阅读了有关HTTP的类似问题之后,我还考虑过将0.0.0.0添加到listen(),但是listen()似乎没有采用IP掩码参数。


查看完整描述

3 回答

?
回首忆惘然

您的服务器套接字很可能绑定到回送IP地址,127.0.0.1而不是“所有IP地址”符号IP 0.0.0.0(请注意,这不是网络掩码)。要确认这一点,请运行sudo netstat -ntlp(如果在Linux上)或netstat -an -f inet -p tcp | grep LISTEN(OSX),然后检查您的进程绑定到哪个IP(查找带有“:3000”的行)。如果看到“ 127.0.0.1”,那就是问题所在。通过将“ 0.0.0.0”传递给listen调用来解决此问题:


var app = connect().use(connect.static('public')).listen(3000, "0.0.0.0");


查看完整回答
反对 回复 2019-11-13
?
翻过高山走不出你

为了使其他用户可以访问您的本地计算机,我通常使用ngrok。Ngrok将您的本地主机公开到网络上,并具有一个易于安装和启动的NPM包装器:


$ npm install ngrok -g

$ ngrok http 3000


在上面的示例中,sail的本地运行实例位于:localhost:3000,现在可以通过以下网址访问Internet:http://69f8f0ee.ngrok.io或https://69f8f0ee.ngrok.io


查看完整回答
反对 回复 2019-11-13
?
慕用2447696

在您的应用上,使其可以从网络中的任何设备访问:


app.listen(3000, "0.0.0.0");

对于Azure,GCP和AWS中的NodeJS


对于在资源管理器中部署的Azure vm,请检查您的虚拟网络安全组并打开端口或端口范围以使其可访问,否则,如果在旧版本的azure中部署了vm,则在您的云端点中。


只需为GCP和AWS寻找与之相当的产品


查看完整回答
反对 回复 2019-11-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信