我不确定如何从笔记本电脑或从Google之类的地方购买的域名制作公共服务器。
当前,我遵循了有关创建服务器的教程,该服务器在localhost:3000上托管一些处理代码,但我想将其公开,以便我的朋友可以连接等。我尝试使用我的公共IP地址和Ipv4我的笔记本电脑上的地址,但它似乎只能通过局域网连接工作。我想知道是否可以从Google购买域名,是否可以使用Node.js并用express替换域名“ localhost:3000”。
var socket;
function setup() {
createCanvas(600,400);
background(51);
socket = io.connect('http://localhost:3000');
socket.on('mouse', newDrawing);
}
function newDrawing(data) {
noStroke();
fill(255, 0, 100);
ellipse(data.x, data.y, 20, 20);
}
function mouseDragged() {
console.log('Sending: ' + mouseX + ',' + mouseY);
var data = {
x: mouseX,
y: mouseY
}
socket.emit('mouse', data);
这是我的客户端代码的一小段,请告诉我您是否也希望看到服务器端。
我希望能够通过将localhost:3000的域名替换为myprivateserver.com之类的东西,连接到从我的笔记本电脑运行的服务器,该服务器来自不同的网络
答案 0 :(得分:0)
作为评论者,最简单的方法是将服务器托管在诸如heroku之类的托管服务上。 Ngrok也可以用于开发目的,但是url是一个很长且令人费解的字符串,您的朋友不会对此感到满意。
之所以可以从LAN而不是从Internet访问服务器的原因是由于内部网络的工作方式。如果您注意到,则连接在同一(WiFi)网络上的所有设备都共享相同的公用IP地址,并且在内部网络中也具有自己的私有IP(通常为192.168.xxx.xxx。)。由于这些机器位于同一(专用/内部)网络上,因此它们可以很好地相互通信。但是,如果来自互联网的机器试图到达目标,则事情将变得更加复杂。
这是因为Internet上的计算机仅“知道”您的公共IP地址,而对您的内部网络一无所知。因此,当请求到达您的路由器时,该请求将被丢弃,因为不清楚该去往哪台计算机。 (这实际上是一项安全功能,因为请求只能从内部网络发起。)
但是,您可以进入路由器设置(通常可以从连接到LAN的任何浏览器/机器上输入192.168.0.1来访问),并找到NAT(网络地址转换)设置。 然后,您可以将路由器的端口80(默认的http端口,尽管可以使用任何端口)映射到计算机的[private-ip-address]:3000,其中[private-ip-adress]是本地IP。承载节点服务器的计算机(可能类似192.168.xxx.xxx)。
如果一切正确完成,则任何知道您的公共IP的人都可以从开放的Internet访问您的服务器。
购买和使用域名还需要一些其他步骤:这是因为通常由ISP提供给“家庭”客户的公共IP是动态的,并且会不时变化。因此,您将需要使用dns服务(那里存在一些免费服务,我个人使用this一个)来确保域名始终指向正确的公共IP!