Tach!
Soweit so gut, mein Problem dabei ist jetzt, dass sich die Kommunikation nicht auf eine Seite beschränkt und im Moment verstehe ich das so, dass bei jedem Laden einer neuen Seite die Verbindung neu aufgebaut wird.
Ja, jeder Browsertab hat seinen eigenen Endpunkt bei der Verbindung zum Webserver. Der Server schickt ein Datenpaket entweder an den einen oder den anderen. Die Browsertabs laufen getrennt, vielleicht sogar in eigenen Prozessen. Ich kenne nichts, das man unabhängig von einem konkreten Browsertab laufen lassen kann, das dann als gemeinsamer Endpunkt dienen könnte. Aber das würde das Problem auch nur vom Server in den Browser verlagern, ohne es grundsätzlich zu lösen.
Oder könnte ich auf der Server-Seite prüfen, ob ich den Client bereits in der Verbindungsliste (Liste der Sockets) habe und die Verbindung wiederbenutzen, ohne dass bei jedem Seitenwechsel eine neue Verbindung geöffnet werden muss?
Nein. Auf dieser Ebene kannst du nicht eingreifen.
Dummerweise lassen sich Socket Resourcen wohl auch nicht in einer MySQL-Tabelle speichern.
Eine solche Verbindung muss am Leben erhalten werden, die bricht sonst ab. Du hättest dann nur die Daten einer toten Verbindung gespeichert. Sockets können nur in aktiven Prozessen laufen.
Ich habe etwas über sogenannte SharedWorker gefunden, aber die scheinen auch mit dem aktuellen Firefox noch nicht fehlerfrei zu laufen? Jedenfalls haben die bisher gefundenen Online-Beispiele nicht funktioniert.
Ah, sowas gibt es doch? Das ist ja schon sehr lange im Forefox und Chrome, so dass ich eher nicht denke, dass die Beispiele grundsätzlich nicht funktionieren.
Momentan fällt mir nur ein, dass ich alles auf eine einzige Seite umstelle und die eigentlichen Seiteninhalte z.B. per Ajax lade. Damit bliebe wohl dann immer dieselbe Seite geöffnet.
Was ist denn das Problem, dass du den Verteiler nicht im Server aufsetzen kannst, sondern ihn dir in den Browser holen möchtest? Du brauchst doch sowieso auf dem Server einen Verteilmechanismus für mehrere Clients. Da spielt es doch keine Rolle, ob die Endpunkte unterschiedliche Clients oder unterschiedliche Tabs in einem Client sind.
dedlfix.