我使用 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 掩码参数。
最佳答案
很可能您的服务器套接字绑定(bind)到环回 IP 地址 127.0.0.1
而不是“所有 IP 地址”符号 IP 0.0.0.0
(注意这不是网络掩码)。要确认这一点,请运行 sudo netstat -ntlp
(如果您使用的是 linux)或 netstat -an -f inet -p tcp | grep LISTEN
(OSX)并检查您的进程绑定(bind)到哪个IP(查找带有“:3000”的行)。如果您看到“127.0.0.1”,那就是问题所在。通过将“0.0.0.0”传递给 listen
调用来修复它:
var app = connect().use(connect.static('public')).listen(3000, "0.0.0.0");
关于Node.js 连接仅适用于本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043926/