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

标签 node.js connect

我使用 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/

相关文章:

javascript - Angular2 Webpack 和 Express

javascript - JavaScript 中是否有一个 find 函数返回您的函数返回的内容,而不是当值为真时返回整个项目

sql-server - 如何将 REST 调用中的数据导入到 MAC 上的 SQLite 数据库中?

ios - 将音频文件从 Google Cloud Storage 流式传输到 iOS Firebase 客户端应用

mysql - 我可以构建一个 php 页面来对 30 个 mysql 数据库运行查询检查吗?

c# - 生成 RDP 配置文件问题

python - 如何将 Python 程序(在 PC 上)连接到 Android 应用程序(在手机上)?

MySQL集群数据/SQL节点在ndbd下连接但在mysqld下不连接

javascript - Axios POST可在Node.js中工作,但不能在Electron中工作

visual-c++ - ConnectEx 在哪里定义?