本地隧道如何在后台运行?

时间:2018-11-06 10:33:33

标签: javascript node.js koa localtunnel

我使用localtunnel已经有一段时间了,现在我想知道它是如何工作的。 Here是我读过的一篇文章,对此进行了解释。

以下是我从上一篇文章中看不懂的一些术语:

  

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

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

  

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

       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个套接字是到本地隧道客户端的连接,用于发送数据。