From c16e50a645deb6d31bcb431539ccc297ffd96aee Mon Sep 17 00:00:00 2001 From: randomuser Date: Sat, 6 May 2023 21:04:47 -0500 Subject: [PATCH] add simple multiclient websocket server --- Makefile | 5 +++++ secmsg/__init__.py | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 Makefile create mode 100644 secmsg/__init__.py diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3de9fb8 --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +debug: + flask --app secmsg run --debug + +prod: + gunicorn -b :5000 --threads 128 secmsg:app diff --git a/secmsg/__init__.py b/secmsg/__init__.py new file mode 100644 index 0000000..b1970a7 --- /dev/null +++ b/secmsg/__init__.py @@ -0,0 +1,27 @@ +import os + +from flask import Flask +from flask_sock import Sock + +app = Flask(__name__, instance_relative_config=True) +sock = Sock(app) +clients = [] + +@app.route('/') +def index(): + return "test" + +@sock.route('/client') +def sock_handler(ws): + clients.append(ws) + + try: + while True: + data = ws.receive() + for client in clients: + if not client is ws: + client.send(data) + + except simple_websocket.ws.ConnectionClosed: + clients.remove(ws) +