我使用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');
});
答案 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之类的内容。或者,如果您注册域名,也可以通过域名访问它。