File size: 1,272 Bytes
07adf07
 
 
595094e
07adf07
 
 
 
595094e
 
 
b8c72c0
07adf07
595094e
 
 
 
 
b8c72c0
 
 
595094e
b3a2577
b8c72c0
 
cf34346
 
b3a2577
cf34346
 
595094e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b8c72c0
07adf07
595094e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# server.py

# 1️⃣ Patch first, before any stdlib or 3rd-party imports
import eventlet

eventlet.monkey_patch()

# 2️⃣ Now import everything else
from flask import Flask, request, send_from_directory
from flask_cors import CORS
from flask_socketio import SocketIO

# 3️⃣ Create app as before
app = Flask(__name__, static_folder="static", static_url_path="/static")
CORS(app)
socketio = SocketIO(app, cors_allowed_origins="*")

motor_states = {f"motor_{i}": 0.0 for i in range(6)}


@app.route("/")
def index():
    return send_from_directory("static", "index.html")


@app.route("/sinus")
def sinus():
    return send_from_directory("static", "sinus.html")


@app.route("/motor_control", methods=["POST"])
def http_control():
    data = request.json or {}
    motor_states.update(data)
    print("HTTP POST:", data)
    return {"status": "ok", "motor_states": motor_states}


@socketio.on("connect")
def on_connect():
    print("Client connected")


@socketio.on("motor_control")
def on_ws_control(data):
    motor_states.update(data)
    print("WS:", data)
    socketio.emit("motor_states", motor_states)


if __name__ == "__main__":
    # 4️⃣ Run under eventlet on 7860 so HF Spaces provides the TLS cert
    socketio.run(app, host="0.0.0.0", port=7860)