Hallo, ich habe derzeit ein Problem mit meiner Websocket Verbindung. Ich habe eine lokale Internetseite auf der eine Websocketverbindung zu einem Server aufgebaut wird. Die Verbindung klappt problemlos, Daten können hin und her gesendet werden. Das Websocket wird zwischen JavaScript (Client) und einem Python Script (Server) aufgebaut. Eventuell habe ich ja ein Verständnisproblem... Kann ich eine Socketverbindung überhaupt über die komplette Browsersitzung aufrechterhalten? Oder muss ich bei jedem Seitenwechsel (z.B. Aufruf einer Unterseite) eine neue Verbindung aufbauen? Oder muss ich sorgar nach jeder Abfrage die Socketverbindung beenden? Gruß René
René P. schrieb: > Oder muss ich bei jedem Seitenwechsel > (z.B. Aufruf einer Unterseite) eine neue Verbindung aufbauen? wenn die Seite neu geladen wird, dann wird auch das JavaScript neu geladen und damit die vebindung neu aufgebaut. Wenn du aber den Content selber über JavaScript austauscht, dann kann sein socket aktiv bleiben.
Peter II schrieb: > wenn die Seite neu geladen wird, dann wird auch das JavaScript neu > geladen und damit die vebindung neu aufgebaut. ok, Danke... so in der Richtung habe ich mir dass gedacht. Dann habe ich jetzt nur noch folgendes Problem: Ich baue meine Socketverbindung auf der Seite index.html auf (index.js). Das Socket ist nun aktiv und funktionsfähig, bleibt es vorerst auch. Wenn ich jetzt aber per Ajax den inhalt von einer weiteren Seite (seite2.html) nachlade, funktioniert hier meine Socketverbindung nicht. Warum, kann ich mir momentan nicht erklären... Ich verwende "Framework7" für meine Internetseite, da hier eine einfache Möglichkeit besteht eine WebApp für iPhone zu entwickeln... http://www.idangero.us/framework7/examples/#.VYD7NGcw_Gg Ich weiß das Framework7 eine neue Seite per Ajax nachlädt, aber warum mein JS nicht funktioniert kann ich mir nicht erklären. Prinzipiell sollte ja in dem Fall ein nachladen über Ajax kein Problem für mein Websocket sein, wenn ich das richtig verstanden habe Gruß René
René P. schrieb: > Ich weiß das Framework7 eine neue Seite per Ajax nachlädt Nun, das kan einfach überprüft werden:
1 | // ungetestet |
2 | addEventListener("load",function(){alert("load or reload withoaut ajax");}); |
3 | alert("script loaded"); |
Du solltest jedoch auch auf Verbindungsabbrüche aus anderen gründen vorbereitet sein:
1 | // ungetestet |
2 | var ws; |
3 | function wsInit(){ |
4 | if(!navigator.onLine||ws&&ws.readyState==ws.OPEN) |
5 | return; |
6 | ws = new WebSocket("host","protocol"); |
7 | ws.onerror = wsInit; |
8 | ws.onopen = function(){ |
9 | }; |
10 | } |
11 | wsInit(); |
12 | addEventListener('online',wsInit); |
Daniel A. schrieb: > Nun, das kan einfach überprüft werden: >
1 | > // ungetestet |
2 | > addEventListener("load",function(){alert("load or reload withoaut |
3 | > ajax");}); |
4 | > alert("script loaded"); |
5 | > |
Danke Daniel! Das hat mir weitergeholfen... Ich bin darauf gekommen dass ein per Ajax geladener JS Code anscheinend gar nicht erst ausgeführt wird! (zumindest in diesem "Framework7") Als ich dann eine Lösung hierzu gesucht habe, bin ich drauf gekommen, dass ich eine Kleinigkeit in meinem HTML Code übersehen habe..
1 | <div data-page="xxxx" class="page"> |
Diese mit xxxx markierte Stelle war bei all meinen Seiten immer gleich, dadurch konnte dieses Framework die einzelnen Seiten nicht mehr unterscheiden, und es war kein Zugriff über eine eigens dafür existierende "my_app.js" machbar, da alle aufgerufenen Seiten den selben Namen hatten...
1 | myApp.onPageInit('seiteX', function (page) { |
2 | alert("seiteX wurde besucht!"); |
3 | }); |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.