From 8152898c4efd9f976f406c5de0d86eb689f49d7b Mon Sep 17 00:00:00 2001 From: Benjamin Sergeant Date: Wed, 9 Oct 2019 22:42:03 -0700 Subject: [PATCH] add more docs about ws --- docs/ws.md | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++ makefile | 2 +- 2 files changed, 167 insertions(+), 1 deletion(-) diff --git a/docs/ws.md b/docs/ws.md index 0709cdab..2b2ed5cd 100644 --- a/docs/ws.md +++ b/docs/ws.md @@ -29,6 +29,172 @@ Subcommands: httpd HTTP server ``` +## curl + +The curl subcommand try to be compatible with the curl syntax, to fetch http pages. + +Making a HEAD request with the -I parameter. + +``` +$ ws curl -I https://www.google.com/ + +Accept-Ranges: none +Alt-Svc: quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000 +Cache-Control: private, max-age=0 +Content-Type: text/html; charset=ISO-8859-1 +Date: Tue, 08 Oct 2019 21:36:57 GMT +Expires: -1 +P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info." +Server: gws +Set-Cookie: NID=188=ASwfz8GrXQrHCLqAz-AndLOMLcz0rC9yecnf3h0yXZxRL3rTufTU_GDDwERp7qQL7LZ_EB8gCRyPXGERyOSAgaqgnrkoTmvWrwFemRLMaOZ896GrHobi5fV7VLklnSG2w48Gj8xMlwxfP7Z-bX-xR9UZxep1tHM6UmFQdD_GkBE; expires=Wed, 08-Apr-2020 21:36:57 GMT; path=/; domain=.google.com; HttpOnly +Transfer-Encoding: chunked +Vary: Accept-Encoding +X-Frame-Options: SAMEORIGIN +X-XSS-Protection: 0 +Upload size: 143 +Download size: 0 +Status: 200 +``` + +Making a POST request with the -F parameter. + +``` +$ ws curl -F foo=bar https://httpbin.org/post +foo: bar +Downloaded 438 bytes out of 438 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Origin: * +Connection: keep-alive +Content-Encoding: +Content-Length: 438 +Content-Type: application/json +Date: Tue, 08 Oct 2019 21:47:54 GMT +Referrer-Policy: no-referrer-when-downgrade +Server: nginx +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +X-XSS-Protection: 1; mode=block +Upload size: 219 +Download size: 438 +Status: 200 +payload: { + "args": {}, + "data": "", + "files": {}, + "form": { + "foo": "bar" + }, + "headers": { + "Accept": "*/*", + "Content-Length": "7", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "httpbin.org", + "User-Agent": "ixwebsocket/7.0.0 macos ssl/OpenSSL OpenSSL 1.0.2q 20 Nov 2018 zlib 1.2.11" + }, + "json": null, + "origin": "155.94.127.118, 155.94.127.118", + "url": "https://httpbin.org/post" +} +``` + +Passing in a custom header with -H. + +``` +$ ws curl -F foo=bar -H 'my_custom_header: baz' https://httpbin.org/post +my_custom_header: baz +foo: bar +Downloaded 470 bytes out of 470 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Origin: * +Connection: keep-alive +Content-Encoding: +Content-Length: 470 +Content-Type: application/json +Date: Tue, 08 Oct 2019 21:50:25 GMT +Referrer-Policy: no-referrer-when-downgrade +Server: nginx +X-Content-Type-Options: nosniff +X-Frame-Options: DENY +X-XSS-Protection: 1; mode=block +Upload size: 243 +Download size: 470 +Status: 200 +payload: { + "args": {}, + "data": "", + "files": {}, + "form": { + "foo": "bar" + }, + "headers": { + "Accept": "*/*", + "Content-Length": "7", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "httpbin.org", + "My-Custom-Header": "baz", + "User-Agent": "ixwebsocket/7.0.0 macos ssl/OpenSSL OpenSSL 1.0.2q 20 Nov 2018 zlib 1.2.11" + }, + "json": null, + "origin": "155.94.127.118, 155.94.127.118", + "url": "https://httpbin.org/post" +} +``` + +## connect + +The connect command connects to a websocket endpoint, and starts an interactive prompt. Line editing, such as using the direction keys to fetch the last thing you tried to type) is provided. That command is pretty useful to try to send random data to an endpoint and verify that the service handles it with grace (such as sending invalid json). + +``` +ws connect wss://echo.websocket.org +Type Ctrl-D to exit prompt... +Connecting to url: wss://echo.websocket.org +> ws_connect: connected +Uri: / +Handshake Headers: +Connection: Upgrade +Date: Tue, 08 Oct 2019 21:38:44 GMT +Sec-WebSocket-Accept: 2j6LBScZveqrMx1W/GJkCWvZo3M= +sec-websocket-extensions: +Server: Kaazing Gateway +Upgrade: websocket +Received ping +Received ping +Received ping +Hello world ! +> Received 13 bytes +ws_connect: received message: Hello world ! +> Hello world ! +> Received 13 bytes +ws_connect: received message: Hello world ! +``` + +``` +ws connect 'ws://jeanserge.com/v2?appkey=_pubsub' +Type Ctrl-D to exit prompt... +Connecting to url: ws://jeanserge.com/v2?appkey=_pubsub +> ws_connect: connected +Uri: /v2?appkey=_pubsub +Handshake Headers: +Connection: Upgrade +Date: Tue, 08 Oct 2019 21:45:28 GMT +Sec-WebSocket-Accept: LYHmjh9Gsu/Yw7aumQqyPObOEV4= +Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15; client_max_window_bits=15 +Server: Python/3.7 websockets/8.0.2 +Upgrade: websocket +bababababababab +> ws_connect: connection closed: code 1000 reason + +ws_connect: connected +Uri: /v2?appkey=_pubsub +Handshake Headers: +Connection: Upgrade +Date: Tue, 08 Oct 2019 21:45:44 GMT +Sec-WebSocket-Accept: I1rqxdLgTU+opPi5/zKPBTuXdLw= +Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15; client_max_window_bits=15 +Server: Python/3.7 websockets/8.0.2 +Upgrade: websocket +``` + ## File transfer ``` diff --git a/makefile b/makefile index 4cee6581..a8911769 100644 --- a/makefile +++ b/makefile @@ -109,7 +109,7 @@ install_cmake_for_linux: # source venv/bin/activate # pip install mkdocs doc: - ./venv/bin/mkdocs build -d ../bsergean.github.io/IXWebSocket/site + mkdocs gh-deploy .PHONY: test .PHONY: build