Hi,
ich bastele gerade eine Page, bei der ich nun "LongPolling" bzw. "Comet" benutzen wollte um bei Änderungen in einer Datenbank vom Server benachrichtigt zu werden, ohne das er client ständig anfragen muss...
Dazu habe ich ein Bsp. gefunden. Client:
Alles anzeigen
Server:
Beim Server habe ich nun vor aus der while-Schleife eine endlos-Schleife zu basteln und innerhalb dieser, sagen wir mal im 30 Sekunden Abstand, eine Datenbankabfrage stellen... Sollten dort nun ein neuer Datensatz hinzukommen soll der Client benachrichtigt werden und von vorne...
Ist das die richtige vorgehensweise? Überfordet das den Serve rnicth wenn z.B. 100 User gleichzeitg (unabhängig) auf Änderungen warten? Falls ja, wie kann man es eleganter lösen?
Danke
ich bastele gerade eine Page, bei der ich nun "LongPolling" bzw. "Comet" benutzen wollte um bei Änderungen in einer Datenbank vom Server benachrichtigt zu werden, ohne das er client ständig anfragen muss...
Dazu habe ich ein Bsp. gefunden. Client:
HTML-Quellcode
- <html>
- <head>
- <title>LongPolling Test</title>
- <script type="text/javascript">
- var xmlhttpreq = null;
- function GetHTTPRequest() {
- var xmlhttp = false;
- try {
- xmlhttp = new XMLHttpRequest();
- } catch (trymicrosoft) {
- try {
- xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
- } catch (othermicrosoft) {
- try {
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (failed) {
- xmlhttp = false;
- }
- }
- }
- return xmlhttp;
- }
- xmlhttpreq = GetHTTPRequest();
- function StartRequest() {
- // Persistente Verbindung öffnen
- xmlhttpreq.open('GET', 'longpolling.php', true);
- xmlhttpreq.onreadystatechange = handle_response;
- xmlhttpreq.send(null);
- }
- function handle_response() {
- if (xmlhttpreq.readyState==4 && xmlhttpreq.status==200) {
- document.getElementById('printarea').innerHTML = xmlhttpreq.responseText;
- }
- // Bei Verbindungsabbruch gleich neu initialisieren
- if (xmlhttpreq.readyState==4) {
- StartRequest();
- }
- }
- </script>
- </head>
- <body onload="StartRequest();">
- <div id="printarea"><h1>Hier erscheint die Serverantwort</h1>
- </div>
- </body>
- </html>
Server:
Beim Server habe ich nun vor aus der while-Schleife eine endlos-Schleife zu basteln und innerhalb dieser, sagen wir mal im 30 Sekunden Abstand, eine Datenbankabfrage stellen... Sollten dort nun ein neuer Datensatz hinzukommen soll der Client benachrichtigt werden und von vorne...
Ist das die richtige vorgehensweise? Überfordet das den Serve rnicth wenn z.B. 100 User gleichzeitg (unabhängig) auf Änderungen warten? Falls ja, wie kann man es eleganter lösen?
Danke