我使用localtunnel已经有一段时间了,现在我想知道它是如何工作的。 Here是我读过的一篇文章,对此进行了解释。
以下是我从上一篇文章中看不懂的一些术语:
localtunnel服务器在大于1023的随机生成的端口上启动新的TCP服务器
如何在服务器中激发另一台服务器?
如果localtunnel客户端能够连接到localtunnel服务器的随机生成的TCP端口,则默认情况下它将打开10个TCP套接字到服务器。
当客户端可以在需要时通过点击某些特定的URL来连接到服务器时,用服务器打开TCP套接字的目的是什么?
我也尝试从Github repository中读取代码,但是由于我是Nodejs及其框架的初学者,理解基本概念太复杂了。
任何基本解释都会有所帮助!
答案 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个套接字是到本地隧道客户端的连接,用于发送数据。