Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Traut sich jemand, die Bedingung mal testweise rauszunehmen oder den Wert von 3 auf 1 zu setzen? Am besten kopiert man das ganze smartVISU-Verzeichnis, macht die Änderung in der Kopie und ruft diese nur mit dem Android-Gerät auf, auf dem der Test laufen soll. Ganz sauber ist das möglicherweise nicht. Besser fügt man vor Zeile 104 noch folgendes ein:
Ich habe das mal ausprobiert mit meinem Surface und Chrome. Leider habe ich keinen Unterschied feststellen können. Habe die If Abfrage auf 1 abgefragt und auch io.close(); innerhalb der If Abfrage eingefügt.
Wenn ich da mal eine Log Ausgabe mache, wo kann ich diese dann sehen? Bzw. Da ist ja auch eine (console.log) innerhalb der If Abfrage. Dann können wir mal sehen, ob er da überhaupt reinspringt.
Wenn ich da mal eine Log Ausgabe mache, wo kann ich diese dann sehen? Bzw. Da ist ja auch eine (console.log) innerhalb der If Abfrage. Dann können wir mal sehen, ob er da überhaupt reinspringt.
Unter Chrome in Weitere Tools -> Entwicklertools -> Console
Okay, ich habe das mal ausgeben lassen. Aber von base.js kann ich da nichts lesen. Wird das denn wirklich auf dem Client ausgeführt oder auf dem Server? Die angehangenen Ausgaben sind vom Client. Habe eine einfache Seite bei mir aufgerufen auf der sich außer ein sekündlicher Zeitstempel nichts ändert. Es sind aber dennoch alle Zeiten dabei.
Danke, dass Du zur Aufklärung des Problems beiträgst.
Zuerst einmal ist es wichtig, dass die Option "Reconnect" in der Konfiguration auf "On" steht. Wenn das der Fall ist, wird in der "root.html", bei jedem Aufruf einer neuen Seite der Timer gestartet, der alle 5 Sekunden abfragt, ob der Websocket gestoppt ist und in diesem Fall die Verbindung neu initialisiert. Javascript läuft übrigens auf dem Client und somit auch die base.js.
Um zu prüfen, ob der Timer überhaupt läuft, kannst Du in die Funktion noch einen Log-Eintrag einfügen (gelb markiert):
Code:
var autoReconnectIntervalId = window.setInterval(function () {
console.log('checking if websocket is alive: state = '+ io.socket.readyState);
...
Dann sollte Dir alle 5 Sekunden der Text mit dem Websocket-Status angezeigt werden.
Interessant ist jetzt, was Dein Tablet nach längerer Zeit der Inaktivität anzeigt (ich hoffe der Browser auf Deinem Tablet stellt die Entwicklerkonsole zur Verfügung). Wenn man dann noch in der if-Abfrage den Wert für io.socket.readyState auf 1 setzt (bzw. auf den Wert, der Dir in den Logs angezeigt wird), zwingt man den Websocket alle 5 Sekunden in eine Initialisierung. Das ist für den Produktivbetrieb natürlich unbrauchbar. Aber es zeigt, ob wir durch ein "io.init()" das Abtackern aller während der Inaktivität verpassten Werte überspringen können.
Das muss ich dann nochmal probieren. Leider gelingt es mir noch nicht die Android Geräte zu debuggen. Aber auf einem anderen Windows PC habe ich schon mal die Console Log Ausgaben gesehen. Ich bleibe dran in der Hoffnung zu finden, was da los sein könnte. Melde mich.
Ich habe es nun geschafft, dass ich die Consolen Ausgaben per Debug auf meinem PC angezeigt bekommen habe. Ich konnte sehen, dass wenn ich das Handy ausschalte das noch munter weiterläuft. Wenn das Handy dann aber in den Schlafmodus geht, ist auch das Debugging stehengeblieben. Leider hat das aber wieder nicht automatisch gestartet, wenn das Handy wieder aktiv wird. Daher kann ich den IO Socket State nicht sehen, der nach dem Aufwecken des Handys kommt.
Gibt es noch einen anderen Trick? Kann ich die Konsolenausgabe vielleicht auch auf dem Handy in eine Datei umleiten? Geht das mit PHP? Dann könnte ich das noch versuchen.
Ansonsten kann ich schon sagen, dass natürlich, wenn ich den state nicht auf 3 sondern auf 1 abfrage, dann wird immer wieder neu aufgebaut, wie auch erwartet. Das Reaktivieren des Handys dauert dann ca. 10sek, bis alles wieder da ist. Aber es werden nicht mehr die ganzen Daten nachgeladen.
Mir ist da noch etwas gekommen. Bei einer Websocketverbindung kann man den Telegrammen doch auch mitteilen, wie lange diese gültig sind, oder? Vielleicht würde das ja auch helfen und die würden dann ganz schnell vom Client verworfen. Sicher bin ich mir aber nicht.
Vielleicht habt ihr einen Tipp für mich, dann probiere ich das mal noch mit dem Umlenken der Consolen Ausgabe in eine Datei.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen und die Websiteaktivitäten zu analysieren. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar