from flask import Flask, render_template, request from flask_sock import Sock import numpy as np import numpy.typing as npt import json app = Flask(__name__) sock = Sock(app) data: npt.NDArray[np.complex128] = np.array([], dtype=complex) @app.route("/preprocessed") def preprocessed(): return render_template("preprocessed.html") subscribers = {} @sock.route("/data") def get_data(sock): while True: msg = sock.receive() subscribers[sock] = list(map(int, msg.split())) def add_data(new_data): global data if data.size == 0: data = np.expand_dims(new_data, axis=0) else: data = np.concat([data, np.expand_dims(new_data, axis=0)], axis=0) # Only keep latest 100 entries if data.shape[0] > 100: data = data[-100:] to_remove = [] for subscriber in subscribers: try: subcarrier, rx, tx = subscribers[subscriber] subscriber.send(new_data.real[subcarrier, rx, tx]) except Exception as e: to_remove.append(subscriber) print(e) for subscriber in to_remove: del subscribers[subscriber] def start(): app.run(debug=True, use_reloader=False)