xref: /aosp_15_r20/external/libwebsockets/minimal-examples/ws-server/minimal-ws-raw-proxy/README.md (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
1*1c60b9acSAndroid Build Coastguard Worker# lws minimal ws - raw proxy
2*1c60b9acSAndroid Build Coastguard Worker
3*1c60b9acSAndroid Build Coastguard WorkerThis demonstrates how to use a proxy connection object to bind together two or
4*1c60b9acSAndroid Build Coastguard Workermore connections in a proxy.  This particular example has a ws server that
5*1c60b9acSAndroid Build Coastguard Workercreates an onward "raw" client connection to 127.0.0.1:1234.
6*1c60b9acSAndroid Build Coastguard Worker
7*1c60b9acSAndroid Build Coastguard WorkerYou can make a suitable "raw server" with
8*1c60b9acSAndroid Build Coastguard Worker
9*1c60b9acSAndroid Build Coastguard Worker```
10*1c60b9acSAndroid Build Coastguard Worker$ nc -l 127.0.0.1 1234
11*1c60b9acSAndroid Build Coastguard Worker```
12*1c60b9acSAndroid Build Coastguard Worker
13*1c60b9acSAndroid Build Coastguard Worker## build
14*1c60b9acSAndroid Build Coastguard Worker
15*1c60b9acSAndroid Build Coastguard Worker```
16*1c60b9acSAndroid Build Coastguard Worker $ cmake . && make
17*1c60b9acSAndroid Build Coastguard Worker```
18*1c60b9acSAndroid Build Coastguard Worker
19*1c60b9acSAndroid Build Coastguard Worker## Commandline Options
20*1c60b9acSAndroid Build Coastguard Worker
21*1c60b9acSAndroid Build Coastguard WorkerOption|Meaning
22*1c60b9acSAndroid Build Coastguard Worker---|---
23*1c60b9acSAndroid Build Coastguard Worker-d|Set logging verbosity
24*1c60b9acSAndroid Build Coastguard Worker
25*1c60b9acSAndroid Build Coastguard Worker
26*1c60b9acSAndroid Build Coastguard Worker## usage
27*1c60b9acSAndroid Build Coastguard Worker
28*1c60b9acSAndroid Build Coastguard Worker```
29*1c60b9acSAndroid Build Coastguard Worker $ ./lws-minimal-ws-raw-proxy
30*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:0540] U: LWS minimal ws-raw proxy | visit http://localhost:7681 (-s = use TLS / https)
31*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:0898] N: LWS: 4.1.99-v4.1.0-294-g2776b4ce65, loglevel 1031
32*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:0902] N: NET CLI SRV H1 H2 WS SS-JSON-POL SSPROX IPV6-on
33*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:1146] N:  ++ [3224086|wsi|0|pipe] (1)
34*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:1203] N:  ++ [3224086|vh|0|netlink] (1)
35*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:1284] N:  ++ [3224086|vh|1|localhost||7681] (2)
36*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:1401] N: lws_socket_bind: nowsi: source ads ::
37*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:45:1425] N:  ++ [3224086|wsi|1|listen|localhost||7681] (2)
38*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:46:1164] N:  ++ [3224086|wsisrv|0|adopted] (1)
39*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:46:2771] N:  ++ [3224086|wsisrv|1|adopted] (2)
40*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:46:3159] N:  ++ [3224086|wsicli|0|RAW/raw-skt/127.0.0.1] (1)
41*1c60b9acSAndroid Build Coastguard Worker[2021/03/04 21:14:46:3451] N:  ++ [3224086|wsisrv|2|adopted] (3)
42*1c60b9acSAndroid Build Coastguard Worker
43*1c60b9acSAndroid Build Coastguard Worker```
44*1c60b9acSAndroid Build Coastguard Worker
45*1c60b9acSAndroid Build Coastguard WorkerVisit http://localhost:7681 in a browser... it loads JS that opens a ws
46*1c60b9acSAndroid Build Coastguard Workerconnection to the proxy's ws server side.  That causes the proxy to open a
47*1c60b9acSAndroid Build Coastguard Workerraw client connection to 127.0.0.1:1234, and forward anything you type in the
48*1c60b9acSAndroid Build Coastguard Workerbrowser to the raw server, and anything typed in the raw server (you must
49*1c60b9acSAndroid Build Coastguard Workerpress enter on netcat to get it sent) is proxied back to the browser.
50*1c60b9acSAndroid Build Coastguard Worker
51*1c60b9acSAndroid Build Coastguard WorkerThe proxy can handle many ws connections each with their individual onward
52*1c60b9acSAndroid Build Coastguard Workerraw client connections, so you could open multiple browser windows.  But you
53*1c60b9acSAndroid Build Coastguard Workerwill need a better "raw server" than netcat, which is restricted to just the
54*1c60b9acSAndroid Build Coastguard Workerone peer at a time.