怎么可能别人,在本地网络上,而这是我的机器上运行我的访问应用程序的NodeJS?

问题描述 投票:35回答:12

我有一个很直接的问题。我做了一个网页游戏的NodeJS,我可以成功地用自己的多个浏览器窗口打开并排侧播放;不过,我想知道是否有可能为其他本地机器能够访问和太跟我玩游戏。

我使用这个网址天真地尝试:my-ip-address:8000和它不会工作。

javascript networking node.js
12个回答
51
投票

您的node.js服务器通常在脚本结束时确定的端口上运行。有时候,3000,但可以是任何东西。为他人访问正确的方法是,你说...

http://your.network.ip.address:port/例如http://192.168.0.3:3000

检查是否具有正确的端口 - 与网络上的IP地址 - 而不是互联网的IP。

否则,也许港口被封锁您的路由器。尝试使用8080或80来解决这个问题 - 否则重新配置你的路由器。


0
投票

默认情况下,节点将通过在其上运行的主机暴露的每一个IP地址上运行。你不需要做什么特别的。你已经知道了服务器的特定端口上运行。您可以通过使用在这台机器上的浏览器的IP地址证明了这一点,:

http://my-ip-address:port

如果没有工作,你可能有你的IP地址是错误的。


0
投票

我有这个问题。解决的办法是允许通过服务器的防火墙的node.js。


-5
投票

确保服务器正在运行,或者通过在命令行窗口中使用“故宫开始”或“nodemon”。


24
投票

我有同样的问题,解决了这个问题。在我的情况下,Windows防火墙(不是路由器)是阻断V8机I / O托管的机器上。

  1. 转到Windows按钮
  2. 搜索“防火墙”
  3. 选择“允许程序通过防火墙进行通信”
  4. 单击更改设置
  5. 勾选所有的“事件触发的I / O V8的JavaScript”或“Node.js的:服务器端JavaScript”的

我的猜测是“为V8的JavaScript事件触发的I / O”是Node.js的通信,以外界的I / O的过程,我们需要释放它,才可以在本地计算机以外的发送数据包。启用该程序通过Windows防火墙进行通信后,我可以使用任何端口号听。


17
投票

如果您使用的是路由器,则:

  1. server.listen(yourport, 'localhost');更换server.listen(yourport, 'your ipv4 address'); 在我的机器是 server.listen(3000, '192.168.0.3');
  2. 确保您的端口转发到您的IPv4地址。
  3. 在Windows防火墙,勾选所有对Node.js的:服务器端JavaScript。

13
投票

面对我的Angular节点服务器(v6.10.3),它在Windows中设置10 http://localhost:4201在本地主机工作正常类似的问题。但http://{ipaddress}:4201不是在本地网络中的其他计算机的工作。

为此,我更新这样的ng serve

//Older ng serve in windows command Prompt

ng serve --host localhost --port 4201

//Updated ng serve
//ng serve --host {ipaddress} --port {portno}
ng serve --host 192.168.1.104 --port 4201

这样的修改能够访问我的应用程序在其他机器上的网络BT调用这个网址后

http://192.168.1.104:4201  
//http://{ipaddress}:4201

5
投票

端口可能是由当地的防火墙或路由器阻止。很难说没有细节。

但有一个简单的解决方案,而您不必乱用防火墙规则,运行节点作为特权进程服务的80端口,等等...

退房Localtunnel。它是一种伟大的Ruby脚本/服务,它使您可以在互联网上任何可用的本地端口秒钟之内。这当然不是一个产品设置是有用的,但尝试与同事游戏,它应该工作就好了!


5
投票

一个提示,没有人没有提到是要记住主机上的LAN访问的地址0.0.0.0,而不是默认本地主机的应用程序。在Mac和Linux防火墙是这个地址不太严格相比默认的本地主机地址(172.0.0.1)。

例如,

gatsby develop --host 0.0.0.0

yarn start --host 0.0.0.0

npm start --host 0.0.0.0

然后,您可以访问该地址在终端进入ifconfigipconfig连接。然后尝试不.255.0结束左侧的IP地址之一


4
投票
const express = require('express');

var app = express();    
app.listen(Port Number, "Your IP Address");
// e.g.
app.listen(3000, "192.183.190.3");

您可以通过在cmd中输入ipconfig获得你的IP地址,如果您的Windows用户还可以使用ifconfig


2
投票

而且不要忘了index.html中下面的代码更改:

 <script src="http://192.168.1.4:8000/socket.io/socket.io.js"></script>
 <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>

 var socket = io.connect('http://192.168.1.4:8000');

祝好运!


1
投票
var http = require('http');
http.createServer(function (req, res) {
}).listen(80, '127.0.0.1');
console.log('Server running at http://127.0.0.1:80/');
© www.soinside.com 2019 - 2024. All rights reserved.