如何使用网络IP而不是localhost与nodejs没有表达?

时间:2018-04-27 14:18:14

标签: javascript node.js server socket.io ip

我使用nodejs作为视频游戏的服务器,我想尝试多人游戏部分,但我无法通过localhost从我的电脑外部连接。

所以,我之前使用过express,这有效:
var app = express();
var serv = app.listen(8081, "127.0.0.1");
上面,服务器使用localhost(127.0.0.1),但它可以更改为我想要的任何IP。并正在听8081端口。

问题是,我不再使用express,只使用Nodejs。我正在处理请求,回复和处理程序"手动"。我在这里研究了一些关于快递的文件:
http://expressjs.com/es/4x/api.html#app.use
但老实说,我不明白这个功能是如何运作的。


这是我的server.js:

// Import the necessary modules var http = require('http');

// Server object server = {};

// Start the http server server.httpServer = http.createServer(function(req, res){ /* Stuff */ }

// Start the server server.httpServer.listen(8081, function(){ console.log('The server is listening on port 8081'); });

2 个答案:

答案 0 :(得分:0)

我不确定您要做什么,但据我了解,您尝试从外部IP到达您的节点服务器。

你不能做那样的事情。您需要一台具有公共可达IP的服务器,您可以在该服务器上启动节点服务器,或者在本地IP中启动节点服务器。

如果您想公开公开本地主机,一个简单的解决方案就是使用ngrok等工具。但请注意,这不是安全和/或最佳做法。

答案 1 :(得分:0)

首先,你错过了一个结束括号

server.httpServer = http.createServer(function(req, res){
/* Stuff */
});

节点服务器将使用localhost在该计算机上运行。 然后,其他计算机可以使用主机名或本地专用IP(如果在同一网络上)联系服务器。 您可以通过运行命令ipconfig或ifconfig来获取私有IP,具体取决于您的系统。

如果您想从网络外部连接到它,则需要打开特定端口(8081),以便可以通过互联网访问。然后,您可以连接到外部IP(您可以从ipchicken.com查看)。您可能没有静态IP地址,因此您可以获得一个或使用noip.com之类的内容。或者,如果您注册域名,也可以通过域名访问它。