2019-08-29 16:05:50 +08:00
|
|
|
## How it works
|
|
|
|
|
|
|
|
Tunnel server/client use websocket protocol.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
1. Arthas tunnel server listen at `192.168.1.10:7777`
|
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
2. Arthas tunnel client register to the tunnel server
|
|
|
|
|
|
|
|
tunnel client connect to tunnel server with URL: `ws://192.168.1.10:7777/ws?method=agentRegister`
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
tunnel server response a text frame message: `response:/?method=agentRegister&id=bvDOe8XbTM2pQWjF4cfw`
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
This connection is `control connection`.
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
3. The browser try connect to remote arthas agent
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
start connect to tunnel server with URL: `'ws://192.168.1.10:7777/ws?method=connectArthas&id=bvDOe8XbTM2pQWjF4cfw`
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
4. Arthas server find the `control connection` with the id `bvDOe8XbTM2pQWjF4cfw`
|
|
|
|
|
|
|
|
then send a text frame to arthas client: `response:/?method=startTunnel&id=bvDOe8XbTM2pQWjF4cfw&clientConnectionId=AMku9EFz2gxeL2gedGOC`
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
5. Arthas tunnel client open a new connection to tunnel server
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
URL: `ws://127.0.0.1:7777/ws/?method=openTunnel&clientConnectionId=AMku9EFz2gxeL2gedGOC&id=bvDOe8XbTM2pQWjF4cfw`
|
|
|
|
|
|
|
|
This connection is `tunnel connection`
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
6. Arthas tunnel client start connect to local arthas agent, URL: `ws://127.0.0.1:3658/ws`
|
2019-08-29 16:05:50 +08:00
|
|
|
|
2020-05-26 10:52:06 +08:00
|
|
|
This connection is `local connection`
|
|
|
|
|
|
|
|
7. Forward websocket frame between `tunnel connection` and `local connection`.
|
|
|
|
|
|
|
|
```
|
|
|
|
+---------+ +----------------------+ +----------------------+ +--------------+
|
|
|
|
| browser <-----> arthas tunnel server | <-----> arthas tunnel client <--- -> arthas agent |
|
|
|
|
|---------+ +----------------------+ +----------------------+ +--------------+
|
2019-08-29 16:05:50 +08:00
|
|
|
```
|