【问题标题】:How localtunnel works under the hood?localtunnel 如何在后台工作?
【发布时间】:2019-04-09 17:46:34
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

  • 您是否在寻找替代答案或更好的说明? @Kaushal28
  • 我正在寻找易于理解的说明。我阅读了您的回答,但由于我是网络初学者,所以并没有清楚地理解它。

标签: javascript node.js koa localtunnel


【解决方案1】:

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

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

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

回答您的问题:

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

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

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

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

【讨论】:

  • 我不明白这个:The data is then piped to a local http client that issues the request to your server.这到底是怎么可能的?
猜你喜欢
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2020-11-06
相关资源
最近更新 更多