Sto cercando di creare un thread web "keepalive" per inviare un emettitore ogni 10 secondi al browser una volta che qualcuno si collega alla pagina ma riceve un errore e non è sicuro di come aggirarlo. Qualche idea su come farlo funzionare. E come potrei uccidere questa discussione una volta che viene inviata una 'disconnessione'?RuntimeError: funzionamento esterno al contesto della richiesta
Grazie!
@socketio.on('connect', namespace='/endpoint')
def test_connect():
emit('my response', {'data': '<br>Client thinks i\'m connected'})
def background_thread():
"""Example of how to send server generated events to clients."""
count = 0
while True:
time.sleep(10)
count += 1
emit('my response', {'data': 'websocket is keeping alive'}, namespace='/endpoint')
global thread
if thread is None:
thread = Thread(target=background_thread)
thread.start()
Non che questo risponda alla domanda, ma potresti volerlo gestire dal front-end. Nel tuo callback on_connect nel browser, imposta un setInterval per emettere un "ping" ogni 10000 ms, quindi fare in modo che il backend risponda con un "pong". Ti salverà da innumerevoli ore di thread di debug e perdite di memoria. (ma come nota a margine, socket.io lo fa già per te) – Tendrid