我使用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掩码参数。
您的服务器套接字很可能绑定到回送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调用来解决此问题:
127.0.0.1
0.0.0.0
sudo netstat -ntlp
netstat -an -f inet -p tcp | grep LISTEN
listen
var app = connect().use(connect.static('public')).listen(3000, "0.0.0.0");