arthas/tunnel-server
polarbear567 6a3d9fac33
Some code optimization ()
..
src Some code optimization ()
README.md optimization of tunnel server README.md ()
pom.xml change xsd url to https.

README.md

How it works

Tunnel server/client use websocket protocol.

For example:

  1. Arthas tunnel server listen at 192.168.1.10:7777

  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

    tunnel server response a text frame message: response:/?method=agentRegister&id=bvDOe8XbTM2pQWjF4cfw

    This connection is control connection.

  3. The browser try connect to remote arthas agent

    start connect to tunnel server with URL: 'ws://192.168.1.10:7777/ws?method=connectArthas&id=bvDOe8XbTM2pQWjF4cfw

  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

  5. Arthas tunnel client open a new connection to tunnel server

    URL: ws://127.0.0.1:7777/ws/?method=openTunnel&clientConnectionId=AMku9EFz2gxeL2gedGOC&id=bvDOe8XbTM2pQWjF4cfw

    This connection is tunnel connection

  6. Arthas tunnel client start connect to local arthas agent, URL: ws://127.0.0.1:3658/ws

    This connection is local connection

  7. Forward websocket frame between tunnel connection and local connection.

+---------+     +----------------------+       +----------------------+     +--------------+
| browser <-----> arthas tunnel server | <-----> arthas tunnel client <--- -> arthas agent |
|---------+     +----------------------+       +----------------------+     +--------------+