Request von Server an Clienten senden

Hallo HaBoler,

Meine Frage ist im Prinzip ganz einfach, trotzdem konnte ich bis jetzt noch keine zufriedenstellende Antwort finden.
Ist es möglich serverseitig einen Request an einen breits bekannten Clienten zu senden? Der Request soll durch einen anderen User ausgelöst werden.

THX MfG Lük
 
Nein. Normalerweise läuft es ja so ab:
Client sendet Request an den Serverl.
Wenn Server existiert, sendet dieser eine Antwort und im normalfall die Webseite.

Was ich aber möchte ist folgendes:
Client sendet normalen Request an meinen Server.
Ich speichere die notwendigen Daten über den Clienten.
Jetzt ändert sich etwas an dem Inhalt meiner Webseite und ich möchte beim Clienten einen Reload meiner Webseite verursachen, sodass er die aktuellen Inhalte sehen kann.
 
Prinzipiell: NEIN
In HTTP ist kein Mechanismus vorgesehen, der Events vom Server generiert.
Es gibt ein paar mehr oder weniger elegante Lösungen, die das Umgehen können:

1. Iteratives Polling:
Der Client sendet in regelmäßigen Abständen "Pings" an den Server, um zu kontrollieren, ob ein Interrupt vorliegt. Ist das Ergebnis positiv ruft der Client den Status von Server ab. Wird meistens mit AJAX realisiert, damit die geladene Seite stabil bleibt. Leider ist die Methode nicht sehr effektiv. Es gibt eine Unschäfe bezüglich Trafficverbrauch und Reaktionszteit: Je besser die Reaktionszeit, desto mehr Serverlast wird erzeugt (durch redundate Requests).

2. Nichtgeschlossene Session:
Mit HTTP 1.1 ist es möglich über eine Verbindung mehrere Dateien runterzuladen (um den Verbindungsaufbau zu sparen). Es ist möglich nach dem Herunterladen der Seite die Verbindung im Wartezustand zu halten. Wenn nun ein Javascript-Prozess über die Verbindung wacht, und beim Eintreffen neuer Daten einen Server-Event abarbeitet, hast du auch dein Ziel erreicht. Nachteil: Der User hat die ganze Zeit einen Ladebalken, der symbolisiert, dass die Seite noch nicht vollständig geladen wurde. Außerdem muss es der Client können. Könnte auch sein, dass der Server irgendwann einen Timeout bringt und die Session schließt.

3. Benutzen von aktiven Inhalten:
Wenn du auf der Seite eine aktive Komponente (z.B: ein Java-Applet) laufen lässt, die Socks-Verbindungen erstellen kann, und deinen Server so konfigurierst, dass ein weiterer Event-Server auf einen weiteren Post lauscht, kannst du auf diese Weise Events übertragen, und diese mit Javascript von der aktiven Komponente abfragen.

Fazit: Es ist sehr kompliziert und erfordert immer ein großes Maß an Konfigurationsarbeit. Außerdem funktioniert es nur, wenn aktives Scripting möglich ist.
Ich habe auch noch keine dieser Methoden im Feld proviert und kann deswegen nichts zur Umsetzbarkeit sagen.
Ich würde es lassen, und statt dessen für sowas gleich ein Applet hernehmen.

mfg, metax.
 
Nun, eigentlich wollte ich sagen: Ich würde keine Software, die ein Server->Client Eventmodell benötigt, über HTTP abwickeln. HTTP ist zur Übermittlung von Hypertext und Dateien entwickelt worden und hat natürlich in diesem Bereich seine Stärken.
Wenn du sonstige Netzwerkkommunikation brauchst, solltest du dir mal die Frage stellen, ob sich das als Standalone-Anwendung nicht besser realisieren ließe.

mfg, metax.
 
Scheinbar ist es doch möglich! Als ich eben mein Online Banking eingerichet habe und die Loginbox (https://bankingportal.sparkasse-trier.de/banking/loginPresentate.jsp) mal etwas länger geöffnet gelassen habe, sah ich wie die Seite automatisch einen Reload vollführte. Auch nach dem Abschalten von JavaScript setzt sicht diese Verhalten fort (auch nach mehreren manuellen Reloads um sicherzustellen, dass wirklich kein JS ausgeführt wird). Selbst ohne Cookies funktioniert das Ganze noch. Also muss die Webseite mich doch nur noch über meine IP ansprechen können. Im Quelltext kann ich nichts erkennen, was den Reload verursachen könnte. Wie erklärt ihr euch das?

//EDIT: Ahhh ok ohne Cookies scheint das doch nicht zu funktionieren: ein simples "Secure Refresh: 336" im Set-Cookie header verursacht den Reload wohl.
 
html header:

Code:
<head>
<meta http-equiv="refresh" content="10; URL=http://www.meineseite/index.html">
</head>

geht auch.
 
also so etwas kann grundsätzlich schon nicht gehen, denn wenn der Server requests an den Client schicken würde, dann wäre ja der Client der Server. :rolleyes:

Aber wie schon gesagt gibts ne menge workarounds :)
 
also wenn es nur um einzelne Bereiche auf der Website geht (sodass nicht unbedingt die ganze Seite neu geladen werden müsste), ist wohl AJAX ne elegante Lösung (asynchronous javascript and xml)
 
Original von beavisbee
also wenn es nur um einzelne Bereiche auf der Website geht (sodass nicht unbedingt die ganze Seite neu geladen werden müsste), ist wohl AJAX ne elegante Lösung (asynchronous javascript and xml)

...die allerdings auf dem Client - Server Modell beruht.
 
Zurück
Oben