diff --git a/app.py b/app.py index 4cfdcf1..4e0cba8 100644 --- a/app.py +++ b/app.py @@ -1,36 +1,18 @@ -from flask import Flask, render_template -from flask_socketio import SocketIO, send, emit +from fastapi import FastAPI, WebSocket +from starlette.websockets import WebSocketDisconnect -app = Flask(__name__) -socketio = SocketIO(app) +app = FastAPI() -@app.route('/') -def index(): - return render_template('iotest.html') +@app.get("/") +async def root(): + return {"message": "Hello, world!"} -def background_task(): - """Example of how to send server generated events to clients.""" - count = 0 - while True: - socketio.sleep(10) # Use socketio.sleep, not time.sleep! - count += 1 - socketio.emit('message', 'heartbeat', namespace='/') - print("Message sent from the server.") - -@socketio.on('message') -def handle_message(message): - print('received message: ' + message) - send(message) - -@socketio.on('connect') -def handle_connect(): - print('Client connected') - emit('after connect', {'data':'Lets dance'}) - socketio.start_background_task(background_task) - -@socketio.on('disconnect') -def handle_disconnect(): - print('Client disconnected') - -if __name__ == '__main__': - socketio.run(app, debug=True) +@app.websocket("/ws") +async def websocket_endpoint(websocket: WebSocket): + await websocket.accept() + try: + while True: + data = await websocket.receive_text() + await websocket.send_text(f"Message text was: {data}") + except WebSocketDisconnect: + print("Client disconnected") diff --git a/requirements.txt b/requirements.txt index 1fb2161..cbc7ddc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,17 +1,17 @@ -bidict==0.23.1 -blinker==1.7.0 +annotated-types==0.6.0 +anyio==4.3.0 click==8.1.7 -dnspython==2.6.1 -eventlet==0.35.2 -Flask==3.0.2 -Flask-SocketIO==5.3.6 +fastapi==0.110.0 +gevent==24.2.1 greenlet==3.0.3 h11==0.14.0 -itsdangerous==2.1.2 -Jinja2==3.1.3 -MarkupSafe==2.1.5 -python-engineio==4.9.0 -python-socketio==5.11.1 -simple-websocket==1.0.0 -Werkzeug==3.0.1 -wsproto==1.2.0 +idna==3.6 +pydantic==2.6.4 +pydantic_core==2.16.3 +sniffio==1.3.1 +starlette==0.36.3 +typing_extensions==4.10.0 +uvicorn==0.29.0 +websocket==0.2.1 +zope.event==5.0 +zope.interface==6.2 diff --git a/test.js b/test.js new file mode 100644 index 0000000..5957e23 --- /dev/null +++ b/test.js @@ -0,0 +1,7 @@ +var ws = new WebSocket("ws://127.0.0.1:8000/ws"); +ws.onmessage = function(event) { + console.log("Received:", event.data); +}; +ws.onopen = function(event) { + ws.send("Hello Server!"); +};