Kurze Antwort: JEIN
(es geht, aber nicht ohne Javascript)
Lange Antwort:
HTTP ist ein
zustandsloses und damit
verbindungsloses Protokoll, somit kannst du vom Server aus dem Client
nicht sagen "tausche diesen Teil im
HTML-Dokument aus".
Das liegt einfach daran, dass nach dem Ausliefern der Webseite durch den Server keine Verbindung mehr zwischen Server und Client besteht.
Ein HTTP-Request ist immer gleich: Client fordert die Seite an => Server liefert sie aus => Verbindung wird getrennt.
Wenn du nicht
Websocket statt HTTP verwendest, kannst du somit vom Server zum Client keine Nachricht mehr schicken, nachdem die Seite bereits vollständig beim Client angekommen ist und die Verbindung bereits getrennt wurde.
Es muss dazu immer einen vorhergegangenen Request vom Client aus geben.
Somit die kurze Antwort auf deine Frage ("geht es mit HTTP und zugleich ohne Javascript"):
Nein, es geht mit der ICS-Komponente nicht, und auch mit keiner anderen Komponente, da es am HTTP-Protokoll selbst liegt, dass es nicht geht.
Du bräuchtest für dein Vorhaben eine stehende Verbindung zwischen Client und Server, so dass der Server den Client jederzeit benachrichtigen kann, ohne dass der Client zuvor einen Request abgesetzt hat.
Für diese Vorhaben hat man das
Websocket-Protokoll als Ersatz / Erweiterung für HTTP entwickelt.
Das können aber leider noch nicht alle populären Browser. (Firefox, Chrome und Safari können es, der IE 9 kanns nicht, bei Opera und beim IE 10 bin ich mir nicht sicher)
Es geht aber dennoch teilweise mit einem "Trick" auch via HTTP mit Hilfe von AJAX:
Auf herkömmliche Weise ohne Websocket macht man so etwas, wie du es vorhast, meist mit einem "AJAX lazy poll".
Das heisst, der Client sendet einen
AJAX-Request mit einem langen Timeout an den Server, den der Server nicht sofort beantwortet, sondern erst dann, wenn es später etwas zum updaten gibt.
Gibt es dann nach einiger Zeit etwas zum updaten, beantwortet der Server diesen vorausgegangen Request und sendet meist JSON oder
XML zurück, das du clientseitig parst, auswertest und dann die entsprechenden
DOM-Elemente via Javascript aktualisierst.
Somit musst du nicht die Seite neu laden, sondern ersetzt anhand der Informationen im JSON /
XML einfach Teile der Seite, allerdings clientseitig und eben per Javascript.
Sobald du das JSON /
XML geparst und ausgewertet hast, sendest du wieder einen "AJAX lazy poll".
Mit dieser Technik emulierst du zumindest teilweise eine Verbindung bzw. gibst dem Server zumindest die Möglichkeit, verzögert auf einen Client-Request zu antworten.
Das hat den Vorteil, dass du vom Client aus nicht andauernd alle x Sekunden nachfragen / pollen musst, ob es ein Update gibt, sondern setzt nur einen einzigen Poll ab, den der Server erst dann verzögert beantwortet, wenn wirklich etwas zum updaten da ist.
Man muss dabei nur beachten, dass das AJAX-Timeout nicht beliebig lang sein kann und ein weiterer "AJAX lazy poll" gesendet werden muss, wenn das Timeout abläuft.
Ausserdem hat es bei manchen Browsern den Nachteil, dass sie, während der Request offen gehalten wird, durch die browserinterne Ladeanzeige (Progressbar, drehender Kreisel etc.) in der Titel- oder Statusbar permanent anzeigen, dass etwas geladen wird, was manche Benutzer verstört. (Es sieht dann so aus, als würde die Seite nie fertigladen)
Generell funktioniert die Technik aber gut und wird von sehr vielen modernen Webseiten exzessiv verwendet.
In Zukunft wird das ganze dann wohl über Websocket abgewickelt werden, sobald die meisten populären Browser Websocket können.
Allerdings wird auch beim Gebrauch von Websocket meist Javascript von Nöten sein, um clientseitig die Anzeige zu aktualisieren.
(Irgend eine Routine muss ja dann auch das Event vom Server empfangen und auswerten, auch wenn eine stehende Verbindung existiert, und die clientseitige Sprache der Browser ist nunmal in fast allen Fällen derzeit Javascript)