微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js连接只能在localhost上工作

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

只要我在本地主机上,它工作正常,但是我不能在同一个内部网上获得其他的计算机来查看它。我使用的是端口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的问题之后,将add.0.0添加到listen(),但似乎listen()没有使用IP掩码参数。

解决方法

很可能您的服务器套接字绑定到环回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");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐