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.