From 5aa34b5e7cf62c8729649bf4bc82fdada21349c3 Mon Sep 17 00:00:00 2001 From: manetta Date: Tue, 6 Apr 2021 19:20:21 +0200 Subject: [PATCH] adding a small prototype here --- websockets/README.md | 19 +++++++++++++++++++ websockets/client.html | 15 +++++++++++++++ websockets/mytxtfile.txt | 28 ++++++++++++++++++++++++++++ websockets/screenshot.png | Bin 0 -> 52024 bytes websockets/server.py | 24 ++++++++++++++++++++++++ 5 files changed, 86 insertions(+) create mode 100644 websockets/README.md create mode 100644 websockets/client.html create mode 100644 websockets/mytxtfile.txt create mode 100644 websockets/screenshot.png create mode 100644 websockets/server.py diff --git a/websockets/README.md b/websockets/README.md new file mode 100644 index 0000000..e61ccbf --- /dev/null +++ b/websockets/README.md @@ -0,0 +1,19 @@ +A small websocket testing setup: live streaming plain text without refreshing the webpage. + +![](screenshot.png) + +# Running this + +Run a websocket server in Python: + + $ python3 server.py + +View the interface: + + open client.html in a browser + +Stream plain text (with HTML features): + + open mytxtfile.txt in a text editor, type, hit save (CTRL+S), type more, hit save, etc + + diff --git a/websockets/client.html b/websockets/client.html new file mode 100644 index 0000000..310d150 --- /dev/null +++ b/websockets/client.html @@ -0,0 +1,15 @@ + + + + WebSocket demo + + + + + diff --git a/websockets/mytxtfile.txt b/websockets/mytxtfile.txt new file mode 100644 index 0000000..1dd6472 --- /dev/null +++ b/websockets/mytxtfile.txt @@ -0,0 +1,28 @@ +hello +hello +hello +hello +and now +yes +now +it +works +sort of
+i need to save my file though +but
+i
+can
+write
+HTML! +yes +yes +yes +and now what happens? +it works +but i still need to save
+ +yesss +

+but it is nice somehow +

+it feels intimate diff --git a/websockets/screenshot.png b/websockets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e87c846d837a960aee683a8cb572b79a3691671e GIT binary patch literal 52024 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