SocketIO in verschiedenen Klassen (mit Flask)
Verfasst: Mittwoch 1. September 2021, 11:58
Hallo,
ich habe mich heute ein wenig mit SocketIO auseinandergesetzt. Dabei haben einfach Beispiele funktioniert. Ich bin dann zu etwas komplizierterem übergegangen.
Folgendes Szenario:
socketlinks importiert aus einer zweiten Datei folgendes:
Das klappt schon einmal mit einem einfachen hin und her senden der Daten.
Dann habe ich folgendes gemacht:
detectorliste ist eine weitere Klasse welche ich geschrieben habe. Dort habe ich wie oben gezeigt socketio hinzugefügt
danach führe ich die Methode test aus
Alles läuft auch ohne Fehler durch. Allerdings schickt socket.io keine Nachrichten an meine Webseite, so wie es die Funktion oben (socketslinks) noch korrekt tat und auch parallel tut.
Habt ihr Ratschläge?
ich habe mich heute ein wenig mit SocketIO auseinandergesetzt. Dabei haben einfach Beispiele funktioniert. Ich bin dann zu etwas komplizierterem übergegangen.
Folgendes Szenario:
Code: Alles auswählen
app = Flask(__name__)
socketio = SocketIO(app)
socketslinks(socketio) # Importiere Socket Links
eventlet.wsgi.server(eventlet.listen(('', 5000)), app)
Code: Alles auswählen
[b]detectorliste = list_of_devices()[/b]
def socketslinks(socketio):
detectorliste.socketio = socketio
@socketio.on('my event')
def handle_message(data):
print('received message: ' + str(data))
@socketio.on('test')
def handle_message(data):
socketio.emit('my response', data, broadcast=True)
Dann habe ich folgendes gemacht:
detectorliste ist eine weitere Klasse welche ich geschrieben habe. Dort habe ich wie oben gezeigt socketio hinzugefügt
Code: Alles auswählen
class list_of_devices:
def __init__(self):
self.detectors = {}
self.create_detectorlist()
self.open_all_detectors()
self.socketio = None
def test(self):
self.socketio.emit('my response', "Hallo Welt", broadcast=True)
Code: Alles auswählen
self.socketio.emit('my response', "Hallo Welt", broadcast=True)
Habt ihr Ratschläge?