我已经使用localtunnel很长一段时间了,现在我想知道它是如何在后台工作的。这是我读到的一篇文章,它解释了同样的道理。
以下是我从上面的文章中不理解的几个术语:
本地隧道服务器在大于1023 的随机生成端口上启动一个新的TCP服务器
如何在服务器中激发另一台服务器
如果localtunnel客户端能够连接到localtunnel服务器随机生成的TCP端口,默认情况下,它会打开10个到服务器的TCP套接字。
当客户端可以随时通过点击特定的URL连接到服务器时,打开与服务器的TCP套接字的目的是什么
我也尝试过从它的Github存储库中读取代码,但它太复杂了,无法理解基本概念,因为我是Nodejs及其框架的初学者。
任何基本的解释都会有所帮助!
以下是localtunnel中涉及的所有服务的图表,按主机分组。
localhost: [localtunnel client] --- [HTTP client] --- [your server]
| |
| |
localtunnel host: [express server] --- [TCP server]
|
|
internet user: [app]
基本上,当您在控制台中键入lt --port 8000
时,它会启动本地隧道客户端。这将连接到位于云中的express服务器。此express服务器会将应用程序应连接的地址返回给您。然后它启动tcp服务器,该服务器侦听来自应用程序的连接。tcp服务器还打开了10个带有localtunnel客户端的套接字,用于发送数据。当连接来自应用程序时,tcp服务器将数据发送到10个套接字中的一个套接字上的localtunnel客户端。然后,数据通过管道传输到本地http客户端,该客户端向服务器发出请求。
回答您的问题:
如何在服务器中激发另一台服务器?
node.js服务器可以使用child_process启动其他进程。
当客户端可以随时通过点击特定的URL连接到服务器时,打开与服务器的TCP套接字的目的是什么?
这里您混淆了本地隧道客户端和互联网客户端(我的图表中的应用程序(。TCP服务器需要保持2个连接:一个与外部世界(应用程序(连接,另一个与本地隧道客户端连接。本文中提到的10个套接字是到localtunnel客户端的连接,用于发送数据。