Announcement

Collapse
No announcement yet.

Javascript Web-Socket Problem mit iOS

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Javascript Web-Socket Problem mit iOS

    Moin zusammen,
    ich hoffe jemand kennt das Problem und kann mit helfen:
    Ich habe ein ziemliches Problem mit einer SSL-Websocket in Javascript. Und zwar nur mit iOS (Wahrscheinlich auch erst seit iOs 15) Eigentlich läuft die Socket mit unseren Client-Server Kartenspielen seit Jahren ziemlich perfekt. Die Clients sind HTML5, der Server VB.Net.

    Das onopen Event wird (vereinfacht) wie folgt behandelt:
    HTML Code:
    ws.onopen = function (){
            // Some code
            setInterval(function(){            
            if(ws.bufferedAmount == 0){
                    var data=getSendQ();
                    if (data.length!=0) {
                        data+=DUMMYSENDER; // 3 Spaces as Dummy
                        ws.send(data);
                    }
                }
            },OUTQTICK); // 50ms
             // some code
             putSendQ(_cmd.REQ_LOGIN + _user.name + TR + _user.passwordEncoded + TR + REMOTEHOST + TR + "87228732" + TR + VV         );
             // some code
    };
    Also eingentlich kein Hexenwerk und ziemlich überschaubar.
    Das Handshake läuft einwandfrei. Aber von den ca. 100 Zeichen des Logins werden nur die erstn 2 Zeichen (manchmal auch 4 oder 6) gesendet. Ganz selten klappt auch der Login.
    Wenn das der Fall ist, läuft auch danch alles ohne irgendwelche Probleme.

    Wie gesagt: Nur unter iOS. Unter Windows-Clients und auch unter Android tritt dieses Problem nicht auf. Ich habe schon alles mögliche Versucht. Irgendwelche Terminierungen am Ende des Strings. Kein Erfolg.

    Ich habe auch versucht, die Kommunikation nicht mehr über Textframes, sondern über Binary Frames abzuwickeln. Auch ohne Erfolg. Auch da werden nur die erst 2 Byte gesendet.

    Das Verrückte ist: Wenn ich das Browserfenster schließe, werden in diesem Moment die restlichen Byte an der Server gesendet, was dann natürlich nix mehr bringt.
    Auch der Closeframe wird dann korrekt erzeugt und gesendet.

    Ich weiß absolut nicht mehr, wo ich noch hingreifen soll, drehe mit komplett im Kreis und komme keinen mm weiter. Irgendwie scheint der Sendebuffer nicht vernünftig geleert zu werden. So eine Art flush könnte ich mir vorstellen. Aber das unterstützt die Socket ja nicht.

    Hat irgend jemand eine Ahnung, woran das liegen könnte?

    Für jeden Tipp wäre ich dankbar.

    Gruß von der verregneten Nordsee
    Joachim
    Zuletzt editiert von Skatjunkie; 06.01.2022, 00:24.

  • #2
    Crosspost
    https://stackoverflow.com/questions/...-on-ios-client
    Christian

    Comment

    Working...
    X