Moin!
ja, es geht, auch wenn einige hier behaupten, es ginge nicht.
http://xulplanet.com/tutorials/mozsdk/serverpush.php
Ok, dann lesen wir zuerst mal den roten Kasten ganz oben auf der Seite:
"WARNING: Most of this content (with the exception of the Mozilla 1.9 XPCOM reference) is very old, and can be expected to be out of date and possibly obsolete. For better XUL documentation, please visit the XUL hub at the Mozilla Developer Center."
Die Infos der Seite sind also alt, möglicherweise auch veraltet und mittlerweile unzutreffend.
Mit dieser Info im Hinterkopf lesen wir:
"The term 'server push' generally means that a server pushes content to the browser client. In reality, a browser doesn't allow this directly."
Das ist genau die Aussage im bisherigen Thread. Der Server kann NICHT dem Client neuen Inhalt hinschieben, er muss warten, bis der Client wieder nachfragt.
"However, it may be emulated in a number of ways."
Wie im Thread ausgeführt.
"The client polls the server at a certain interval, say every five minutes. This technique is typically used to update news information. The client does this by reloading a page every so often."
Klassiker. Funktioniert. Der Server kann sich im Rahmen des Timeouts auch eine gewisse Zeit nehmen, um mit "nix" zu antworten, sollte während der Zeit nichts passiert sein. Frühere Antwort im Eventfall natürlich nicht ausgeschlossen.
"The client uses the 'multipart/x-mixed-replace' content type when sending a response. The content type is expected to send a series of documents one after the other, where each one will replace the previous one. The server might delay between each part, which gives the illusion that the data is being updated after an interval. This technique requires a connection to stay open."
Funktioniert nicht. Hat wohl mal in alten Netscapes funktioniert (ich hatte mal damit experimentiert, Netscape 4 war nach meiner Erinnerung schon zu neu!), aber wie man anhand des experimentellen Mimetyps sieht, ist das nie standardisiert worden und wird von aktuellen Browsern nicht unterstützt.
"In Mozilla 1.6 and later, server sockets may be used to listen for incoming connections. This technique works similarly to the way a server would listen to connections from a browser and doesn't require a connection to be kept open. However, server sockets may only be used from privileged code."
Funktioniert nur unsicher. Erstens: Braucht erhöhte Privilegien, es gibt also eine unschöne Sicherheitsmeldung im Browser, die der Benutzer erlauben muss. Zweitens: Der im Client geöffnete Port muss aus dem Netz auch erreichbar sein - dummerweise sind Firewalls und NAT sehr verbreitet, die den Verbindungsaufbau von "außen" (also dem Server) nach "innen" (zum Client) in der Regel verbieten.
- Sven Rautenberg