Hi Oli,
ich kann mir mittlerweile nicht mehr vorstellen, dass bei Dir das write funktioniert. Ein read nur deshalb, weil Du die framing bytes irgendwie eliminierst.
Nach diversen Abstürzen, Zusatzlogging ....habe ich mal write mit simple_write gemacht. Kein Absturz. Beim anschließenden read bekomme ich nur framing bytes. Letzteres kenne ich aber schon, da ich das bei der "manuellen" Variante(also http, upgrade websocket...). auch hatte. Es ist einfach ein finales frame ohne payload mit opcode 0x08(close) vom Server, weil ihm der payload nicht gefiel.
Ich schätze neben dem o.g. die Situation nun so ein:
- websocketaufbau (mit TLS) funktioniert bestens(das Modul macht nichts anderes als das bekannte http-get, upgrade)
- Nutzung von DevIo funktioniert mit seinen Funktionen open, read, write, is_open. Read_Fn u. Ready_Fn auch.
- für read muss das frame um die framing bytes gestripped werden; vor dem write um die framing bytes ergänzt; und schließlich brauchen wir die Inhalte der framing bytes, da z.B. manchmal der Server ohne payload antwortet, aber z.B. der opcode(z.B. close) für die Weiterverarbeitung nötig ist.
@Rudi: prüft DevIo eigentlich in irgendeiner Form(z.B. ping)zyklisch , ob die Verbindung noch steht ?
Wenn ja, würde das zu einem close der Verbindung führen.
Grüße Markus