5

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

以下是我从上述文章中无法理解的一些术语:

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

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

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

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

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

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

4

1 回答 1

7

下面是 localtunnel 中涉及的所有服务的图表,按主机分组。

       localhost:             [localtunnel client]  --- [HTTP client] --- [your server]
                               |                |  
                               |                | 
localtunnel host:      [express server] --- [TCP server]
                                                    |
                                                    |
   internet user:                                 [app]

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

要回答您的问题:

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

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

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

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

于 2018-11-06T22:03:18.490 回答