localtunnel 是如何工作的?

Kau*_*l28 5 javascript node.js localtunnel koa

我使用localtunnel已经有一段时间了,现在我想知道它是如何工作的。是我读过的一篇文章,它解释了相同的内容。

以下是我从上面的文章中不明白的一些术语:

localtunnel 服务器在随机生成的大于 1023 的端口上启动一个新的 TCP 服务器

如何在服务器中触发另一台服务器?

如果 localtunnel 客户端能够连接到 localtunnel 服务器随机生成的 TCP 端口,默认情况下它会向服务器打开 10 个 TCP 套接字。

当客户端可以在需要时通过点击某些特定 URL 连接到服务器时,打开与服务器的 TCP 套接字的目的是什么?

我也尝试从它的Github 存储库中读取代码,但是理解基本概念太复杂了,因为我是 Nodejs 及其框架的初学者。

任何基本的解释都会有所帮助!

mih*_*hai 7

这是本地隧道中涉及的所有服务的图表,按主机分组。

       localhost:             [localtunnel client]  --- [HTTP client] --- [your server]
                               |                |  
                               |                | 
localtunnel host:      [express server] --- [TCP server]
                                                    |
                                                    |
   internet user:                                 [app]
Run Code Online (Sandbox Code Playgroud)

基本上,当您lt --port 8000在控制台中键入时,它会启动localtunnel 客户端。这将连接到位于云中的快速服务器。此快速服务器为您提供应用程序应连接的地址。然后它启动侦听来自您的应用程序的连接的tcp 服务器。tcp 服务器还与 localtunnel 客户端打开 10 个套接字,用于发送数据。当连接来自应用程序时,tcp 服务器将数据发送到 10 个套接字之一上的 localtunnel 客户端。然后数据通过管道传送到本地http 客户端,该客户端您的服务器发出请求。

回答您的问题:

如何在服务器中触发另一台服务器?

node.js 服务器可以使用child_process启动其他进程。

当客户端可以在需要时通过点击某些特定 URL 连接到服务器时,打开与服务器的 TCP 套接字的目的是什么?

在这里,您将 localtunnel 客户端与 Internet 客户端(我图中的应用程序)混淆了。TCP 服务器需要保持 2 个连接:一个与外界(应用程序)连接,一个与localtunnel 客户端连接。文中提到的10个socket是连接localtunnel客户端,用于发送数据。