如何从本地主机更改为域名?

How to change from localhosting to a domain name?

我不确定如何从我的笔记本电脑或从 Google.

等地方购买的域名制作 public 服务器

目前,我已经按照教程创建了一个服务器,该服务器在 localhost:3000 上托管了一些处理代码,但我想做到这一点 public 以便我的朋友可以连接等。我已经尝试使用我的public ip 地址以及我笔记本电脑上的 Ipv4 地址,但它似乎只能通过 LAN 连接工作。我想知道如果我从 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

的域名,从不同网络连接到服务器 运行

正如评论者已经提到的,最简单的方法是将您的服务器托管在像 heroku 这样的托管服务上。 Ngrok 也适用于开发目的,但 url 是一个非常长且令人费解的字符串,您的朋友不会乐于输入。

您可以从 LAN 而不能从 Internet 访问您的服务器的原因是您的内部网络的工作方式。如果您注意到,连接到同一个 (WiFi) 网络的所有设备共享相同的 public IP 地址,并且在内部网络中也有自己的私有 IP(通常类似于 192.168.xxx.xxx).因为机器在同一个 (private/internal) 网络上,所以它们可以很好地相互通信。如果互联网上的机器试图访问它们,事情就会更加复杂。

这是因为 Internet 上的机器仅 'know' 关于您的 public IP 地址,而与您的内部网络无关。因此,当请求到达您的路由器时,它会被丢弃,因为不清楚它应该去往哪台机器。 (这实际上是一项安全功能,因为请求只能从内部网络发起)。

但是您可以进入您的路由器设置(通常通过从连接到 LAN 的任何 browser/machine 输入 192.168.0.1 来访问)并找到 NAT(网络地址转换)设置。 然后,您可以将路由器的端口 80(默认的 http 端口,尽管您可以使用任何端口)映射到计算机的 [private-ip-address]:3000,其中 [private-ip-adress] 是本地 IP托管节点服务器的计算机(可能类似于 192.168.xxx.xxx)。

如果一切都正确完成,任何知道您 public IP 的人都可以通过开放的互联网访问您的服务器。

购买域名并使用它还需要一些额外的步骤:这是因为通常 public ISP 提供给 'home' 客户的 IP 是动态的并且会不时更改。因此,您将需要使用 dns 服务(那里有一些免费的,我个人使用 this 一个)以确保域名始终指向正确的 public IP!