Seite 3 von 7

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: Sa Mai 02, 2020 11:26 pm
von MiniMaxV2
Wie gesagt, da ich den Eintrag mit dem Namespace korrekt hab, kann ich das für mich ausschließen. Die Probleme sind gekommen, als ich von 11 auf 11.2 gegangen bin. Die URL Parameter hab ich eben auch ausprobiert - kein Erfolg.

Allerdings gibt Chrome etwas mehr Infos in der Console:

Code: Alles auswählen

cv-webkit.js:213 000848 SyntaxError: Unexpected token \ in JSON at position 72
position 72,Object.parse (<anonymous>),https://timberwolf413/proxy/visu/script/cv-webkit.js:213:238747,Array.forEach (<anonymous>),) [as parse] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:238659,) [as getResponse] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:218450,) [as handleLogin] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:219791,https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159415,) [as then] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159893,https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159380,Array.forEach (<anonymous>),) [as dispatchEvent] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159272,) [as dispatchEvent] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:145484,https://timberwolf413/proxy/visu/script/cv-webkit.js:213:147694,) [as then] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159893,) [as fireEvent] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:147650,) [as fireEvent] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:149727
cv.log.appender.Native.process() @ cv-webkit.js:213
cv-webkit.js:213 000850 SyntaxError: Unexpected token \ in JSON at position 72
position 72,Object.parse (<anonymous>),https://timberwolf413/proxy/visu/script/cv-webkit.js:213:238747,Array.forEach (<anonymous>),) [as parse] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:238659,) [as getResponse] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:218450,) [as handleSession] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:230469,) [as handleLogin] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:220038,https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159415,) [as then] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159893,https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159380,Array.forEach (<anonymous>),) [as dispatchEvent] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159272,) [as dispatchEvent] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:145484,https://timberwolf413/proxy/visu/script/cv-webkit.js:213:147694,) [as then] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:159893,) [as fireEvent] (https://timberwolf413/proxy/visu/script/cv-webkit.js:213:147650
cv.log.appender.Native.process() @ cv-webkit.js:213
cv-webkit.js:213 000851 cv.io.transport.LongPolling: CometVisu protocol error: missing protocol version
cv.log.appender.Native.process() @ cv-webkit.js:213

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: Sa Mai 02, 2020 11:41 pm
von Chris M.
Dann schau mal im Netzwerk-Reiter nach allen(!) Lade-Events der Datei "l" und schau mal wie oft die geladen wird und was dann der Inhalt ist.

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: Sa Mai 02, 2020 11:52 pm
von MiniMaxV2
Hi Chris,
In der Default Config genau 1x und der Inhalt ist der gleiche, wie ich im anderen Post gepasted hab:

Code: Alles auswählen

{ "v":"0.0.1", "s":"SESSION", "c": {"baseURL": "/proxy/visu/cgi-bin/"} }

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: So Mai 03, 2020 12:10 pm
von Chris M.
Exakt 1x ein "l", mit dem Inhalt und dann die Fehlermeldung "cv.io.transport.LongPolling: CometVisu protocol error: missing protocol version" auf der Konsole kann nicht sein, denn der Code der den Fehler erzeugt ist:

Code: Alles auswählen

if (!json.hasOwnProperty('v')) {
  this.error('CometVisu protocol error: missing protocol version');
  this.client.showError(cv.io.Client.ERROR_CODES.PROTOCOL_MISSING_VERSION, json);
}
D.h. im JSON wird kein Eintrag "v" gefunden, der aber nach Deiner Datei klar da sein müsste.

Das Problem wird aber irgendwo vorher liegen, denn die Fehlermeldung "SyntaxError: Unexpected token \ in JSON" sagt, dass der Text nicht als JSON interpretiert werden konnte (womit dann auch nicht überraschend wäre, dass kein "v" da drinnen gefunden wird, denn in einem nicht geparstem Objekt ist ja auch nichts drinnen).
In dem Text

Code: Alles auswählen

{ "v":"0.0.1", "s":"SESSION", "c": {"baseURL": "/proxy/visu/cgi-bin/"} }
kommt aber gar kein "\" vor.

=> Ich vermute immer noch, dass Du ein "l" übersiehst, das von einer nicht gültigen URL abgerufen wird und somit der Server-Fehler-Text - der ja kein JSON ist - dieses Verhalten auslöst (das könnte auch passieren, wenn der Server ein 502 Fehler gesendet hat)

Grundsätzlich kann es natürlich auch Problem geben, dass zwar das "l" noch mag, aber die dort übermittelte "baseURL" falsch ist und dann die folgenden Aufrufe an "r" und später auch "w" fehl schlagen. Das wäre der Fall, wenn im Docker-Container das "CGI_URL_PATH" einen falschen Wert enthält.
Aber bei so einem Problem kann es nicht zur Meldung "cv.io.transport.LongPolling: CometVisu protocol error: missing protocol version" kommen

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: So Mai 03, 2020 3:15 pm
von MiniMaxV2
Hi Chris,
schau mal, das ist der Netzwerk-Traffic:
NetzwerkLogFFCV.jpg
Ich sehe da nur ein "l" :)

Rufe ich dagegen eine andere Config auf, also nicht die Default (z.B. meine eigene) kommt ein "l" und dann dauerhaft "r" - das macht auch Sinn, da dann die Werte versucht werden abzufragen:
NetzwerkLogFFCV.jpg
Ich bin jetzt mal im WebDev durch den Code gestepped. In der HandleLogin Methode und dann in der getResponse wird folgender Wert in den JSON Parse übergeben:

Code: Alles auswählen

"{ \"v\":\"0.0.1\", \"s\":\"SESSION\", \"c\": {\"baseURL\": \"/proxy/visu/cgi-bin/\"} }\n"
Dieser ist escaped. Da haben wir dann auch unsere ersten "\", die aber noch inordnung/valide sein sollten. Ich hab den Teil mal mit der 11.0 verglichen, da kommt der selbe Wert an.

Nun der Test in der Konsole (im Breakpoint). Folgender Befehl führt zu der Exception unter 11.2 und klappt unter 11.0 (bl ist der obige Wert):

Code: Alles auswählen

cv.io.parser.Json.parse(bl)
Also schauen wir uns die Parse-Function, als verdächtigen, mal näher an.

hier ist auffällig, dass unter 11.2 folgende Zeile hinzugekommen ist:

Code: Alles auswählen

h = h.replace(/\n/g, a);
Damit wird aus obiger Antwort, folgende (man beachte das "\\n"):

Code: Alles auswählen

"{ \"v\":\"0.0.1\", \"s\":\"SESSION\", \"c\": {\"baseURL\": \"/proxy/visu/cgi-bin/\"} }\\n"
mit diesem neuen Ausdruck, fliegt der folgende Befehl auf die Nase:

Code: Alles auswählen

qx.lang.Json.parse(h);
Nutze ich hingegen den originalen string, ohne das Replace, klappt es.

Kurze Suche im Code führt zur Json.js: https://github.com/CometVisu/CometVisu/ ... er/Json.js
Wenn man nun einmal den Change anschaut, hat Tobias folgendes "gefixed" (nur im 11.2 noch nicht im Develop gemerged):

Code: Alles auswählen

escape linefeeds in json string to prevent parser exceptions 
Der PR: https://github.com/CometVisu/CometVisu/pull/1002

So weit so gut - kannst du + Tobias damit was anfangen?

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: So Mai 03, 2020 4:40 pm
von Chris M.
Danke für die Analyse, damit kommen wir der Sache schon mal deutlich näher!

Was ich aber nicht verstehe:
MiniMaxV2 hat geschrieben: So Mai 03, 2020 3:15 pm Ich bin jetzt mal im WebDev durch den Code gestepped. In der HandleLogin Methode und dann in der getResponse wird folgender Wert in den JSON Parse übergeben:

Code: Alles auswählen

"{ \"v\":\"0.0.1\", \"s\":\"SESSION\", \"c\": {\"baseURL\": \"/proxy/visu/cgi-bin/\"} }\n"
Dieser ist escaped. Da haben wir dann auch unsere ersten "\", die aber noch inordnung/valide sein sollten. Ich hab den Teil mal mit der 11.0 verglichen, da kommt der selbe Wert an.
Wieso ist das Escaped? Ich dachte das kommt normal über's Netzwerk ohne Escapes an... Das kannst Du bestätigen, oder?

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: So Mai 03, 2020 6:00 pm
von MiniMaxV2
Hi Chris,
Ja sorry das hab ich etwas missverständlich geschrieben. Die \" kommen durch die Konsole, da das Tüddelchen escaped wird. Also die kommen durch den Einsatz im String " \" foo \" ". Auf dem Netzwerk kommt das alles un-escaped.

Edit: Kurzgefasst, es wird aus einem NewLine ein "\n" (0x0D => 0x5C 0x6E). Das kann in JSON nicht funktionieren. Jetzt ist die Frage, was Tobias erreichen wollte. :think:

Hier noch einmal die Ausgabe vor dem Replace und nach in "Interpretierter Form":

Code: Alles auswählen

console.debug(h)
{ "v":"0.0.1", "s":"SESSION", "c": {"baseURL": "/proxy/visu/cgi-bin/"} }

=> Replace

console.debug(h)
{ "v":"0.0.1", "s":"SESSION", "c": {"baseURL": "/proxy/visu/cgi-bin/"} }\n

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: So Mai 17, 2020 10:55 pm
von Chris M.
Kurzes Update: Für den Pull Request #1002 machen wir jetzt ein Revert, vgl. https://github.com/CometVisu/CometVisu/pull/1027 - d.h. dann sollte das Thema gelöst sein

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: Fr Mai 22, 2020 6:01 pm
von Izeman
Moin zusammen,

ich bin nicht so fit in der Materie was ihr geschrieben habt. Was kann man denn aktuell machen wenn man so einen Fehler auch hat?

Bei mir in der Konsole steht ganz oft:

028322 SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
https://timberwolf222/proxy/visu/script ... :213:94036 cv-gecko.js:213:1088044
028322 cv.io.transport.LongPolling: CometVisu protocol error: backend responded to a read request without an "i"-parameter

Danke und Gruß Bernd

Re: Hilfestellung für CV Anfänger, Aufruf der Visu funktioniert nicht

Verfasst: So Mai 24, 2020 2:17 pm
von Chris M.
Welche CometVisu Version? App oder selber installiert?
Läuft der knxd noch? (Im Zweifel den Container neu starten: Portainer -> Containerer -> Container vorne selektieren -> Oben auf "Restart" klicken)