ESP8266 Websocket Kommunikation und HTTP-Requests?
Meine Frage lautet, kann ich in einem Arduino-Sketch einen ESP8266 mit Websockets zu einem Server o.ä. Kommunizieren lassen und trotzdem GET-Requests von einem anderen Server anfordern?
Soll ich dazu Taskklassen erstellen, die unterschiedliche Prioritäten haben? Gibt es bessere alternativen?
Hintergrund: Habe am uC mehrere Sensoren usw. durch eine externe Beschaltung angeschlossen, diese Daten möchte ich in nahezu Echtzeit am Webserver ausgeben (daher Websocket).
Zusätzlich hätte ich gerne die Daten von einem anderen Gerät, welches diese nur über HTTP-Requests bereitstellt. Kann ich die Daten abwechselnd ausgeben lassen?
Muss die Websocket-Verbindung dann jedes mal neu aufgebaut werden oder bleibt diese bestehen?
MfG
1 Antwort
Ich sehe zunächst einmal nicht, dass etwas funktional dagegen sprechen würde. Das einzige Problem, welches entstehen könnte, wäre eine Verzögerung einer der Aktionen. Wenn der GET-Request bspw. länger braucht, könnte er den WebSocket-Server blockieren. Doch dem lässt sich gegenwirken, indem du den Request asynchron laufen lässt.
Ich habe einmal auf die Schnelle eine Bibliothek herausgesucht, die verspricht, HTTP Requests asynchron handhaben zu können.
https://github.com/khoih-prog/AsyncHTTPRequest_Generic
Sie nutzt einen Timer, der in regelmäßigen Abständen einmal den Status prüft.
Muss die Websocket-Verbindung dann jedes mal neu aufgebaut werden oder bleibt diese bestehen?
Die WebSocket-Verbindung bleibt bestehen. Hier findest du ein Beispiel für eine Implementation.
PS.: Hier nochmal explizit ein Tutorial für ESP8266. Es wird aber dieselbe Bibliothek verwendet, denn sie ist sowohl für ESP8266 als auch ESP32 kompatibel.