wip
Browse files
server.py
CHANGED
@@ -1,10 +1,20 @@
|
|
1 |
-
|
|
|
|
|
|
|
2 |
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
|
6 |
@app.route("/")
|
7 |
-
def
|
8 |
return send_from_directory("static", "index.html")
|
9 |
|
10 |
|
@@ -13,5 +23,28 @@ def sinus():
|
|
13 |
return send_from_directory("static", "sinus.html")
|
14 |
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
if __name__ == "__main__":
|
17 |
-
|
|
|
|
|
|
1 |
+
import eventlet
|
2 |
+
from flask import Flask, request, send_from_directory
|
3 |
+
from flask_cors import CORS
|
4 |
+
from flask_socketio import SocketIO
|
5 |
|
6 |
+
# 1) static under /static
|
7 |
+
app = Flask(__name__, static_folder="static", static_url_path="/static")
|
8 |
+
CORS(app)
|
9 |
+
|
10 |
+
# 2) Socket.IO with wildcard CORS
|
11 |
+
socketio = SocketIO(app, cors_allowed_origins="*")
|
12 |
+
|
13 |
+
motor_states = {f"motor_{i}": 0.0 for i in range(6)}
|
14 |
|
15 |
|
16 |
@app.route("/")
|
17 |
+
def index():
|
18 |
return send_from_directory("static", "index.html")
|
19 |
|
20 |
|
|
|
23 |
return send_from_directory("static", "sinus.html")
|
24 |
|
25 |
|
26 |
+
@app.route("/motor_control", methods=["POST"])
|
27 |
+
def http_control():
|
28 |
+
data = request.json or {}
|
29 |
+
motor_states.update(data)
|
30 |
+
print("HTTP POST:", data)
|
31 |
+
return {"status": "ok", "motor_states": motor_states}
|
32 |
+
|
33 |
+
|
34 |
+
@socketio.on("connect")
|
35 |
+
def on_connect():
|
36 |
+
print("Client connected")
|
37 |
+
|
38 |
+
|
39 |
+
@socketio.on("motor_control")
|
40 |
+
def on_ws_control(data):
|
41 |
+
motor_states.update(data)
|
42 |
+
print("WS:", data)
|
43 |
+
# broadcast new states back if you like
|
44 |
+
socketio.emit("motor_states", motor_states)
|
45 |
+
|
46 |
+
|
47 |
if __name__ == "__main__":
|
48 |
+
# 3) run under eventlet on port 7860 (HF Spaces HTTPS)
|
49 |
+
eventlet.monkey_patch()
|
50 |
+
socketio.run(app, host="0.0.0.0", port=7860)
|