Das Backend sollte auch alle 5 Sekunden Nachrichten senden. Ich nenne diese "kontinuierlichen Nachrichten" und versuche sie mit Flask-Socketio zu senden. Sie werden vom Backend mit Socketio start_background_task und emit gesendet und von der Frontend mit Socket.on () . Aber wenn ich den Socketio -Teil für "kontinuierliche Nachrichten" übernehme, schlägt die Kommunikation fehl. Das Backend empfängt die Anrufe "Standardnachrichten" nicht und das Frontend erhält nicht die "kontinuierlichen Nachrichten". Was muss ich hinzufügen, damit beide Nachrichten korrekt funktionieren?
Code: Select all
import time
from flask import Flask
from flask_cors import CORS
from flask_socketio import SocketIO
app = Flask(__name__)
CORS(app)
# Continuous messages ##########################################
socketio = SocketIO(app, cors_allowed_origins="*")
@socketio.on('connect')
def handle_connect():
print('Client connected')
socketio.start_background_task(send_continuous_messages)
def send_continuous_messages():
while True:
print("Backend sends a continuous message")
socketio.emit("continuous_message", {"data": "New continuous message"})
time.sleep(5)
################################################################
@app.route("/standard-message", methods=["GET"])
def generate_standard_message():
print("Backend sends a standard message")
return {"data": "New standard message"}
if __name__ == "__main__":
print("Starting app")
socketio.run(app, debug=True)
< /code>
Frontend < /p>
const myButton = document.getElementById('my-button');
const BASE_URL = "http://localhost:5000";
// Continuous messages #########################################
const socket = io(BASE_URL);
socket.on('connect', () => {
console.log('WebSocket connected');
});
socket.on('disconnect', () => {
console.log('WebSocket disconnected');
});
socket.on('continuous_message', (data) => {
console.log('Frontend received a continuous message:', data);
});
// #############################################################
async function receiveStandardMessage() {
console.log('Frontend is requesting a standard message');
const response = await fetch(`${BASE_URL}/standard-message`);
const data = await response.json();
console.log('Frontend received a standard message:', data);
}
myButton.addEventListener('click', receiveStandardMessage);
< /code>
Index.html
My app
Send standard message