Dieses Blog durchsuchen

Dienstag, 7. Mai 2013

COMET: Webanwendungen die in Echtzeit laufen und auf Änderungen zeitnah reagieren.


Oft will man den Benutzer informieren, dass zwischenzeitlich eine Änderung durch einen anderen Benutzer durchgeführt wurde. Im Normalfall geht es nicht, da der Server nur dann Daten an den Browser senden kann, wenn er dazu aufgeforder wird. Eine Lösung wäre den Server in einem bestimmten Intervall per AJAX abzufragen und auf Änderungen entsprechend zu reagieren. Dies ist aber sehr unelegant und nicht besonders ressourcenschonend.
In der letzten Zeit hat sich eine neue Technologie mit dem Namen Comet herauskristallisiert. Es ist ähnlich wie bei AJAX ein Oberbegriff für mehrere Ansätze die als Ziel haben, die Daten vom Server zum Browser zu pushen, ohne dass der Browser die anfordern muss.

Ein Lösungsansatz der auf dieser Idee basiert ist "CometD Bayeux Ajax Push" (http://cometd.org/)
Das Projekt in der neuesten Version kann man hier herunterladen: http://download.cometd.org/
Wir werden folgend das Projekt unter Windows einrichten.

1. VORBEREITUNG:

Voraussetzung für CometD sind:
- Java JDK ab 5.0
- Maven ab 3.0
- Jetty ab 2.5

Falls Java nicht installiert ist, dann Java installieren. Mit "java -version" in der Kommandozeile kann man testen ob Java bereits auf dem System installiert wurde.

Maven (http://maven.apache.org/) ist ein Build-Management-Tool der Apache Software Foundation der auf Java basiert. Mit ihm kann man u.a. Java-Programme standardisiert erstellen und verwalten.
Maven wird folgend unter Windows installiert:
- Maven runterladen: http://maven.apache.org/download.cgi
- das Archiv entpacken, am besten direkt im Root, also z.B. C:\maven\.
- wichtig: man darf keine Leerstellen im Pfad benutzen.
- die JAVA_HOME Systemvariable setzen (Bsp. C:\Program Files\Java\jdk1.7.0_15)
- die PATH Systemvariable um den Maven-Pfad erweitern (Bsp. PATH= ...;C:\maven\bin\)
- Windows neu starten.
- testen in der Kommandozeile, ob die Installation erfolgreich war: mvn -version

Jetty (http://www.eclipse.org/jetty) ist ein in Java geschriebener Servlet-Container und Webserver. Wir brauchen insbesondere seine Servlet Fähigkeiten. Als Servlets bezeichnet man Java-Klassen, deren Instanzen innerhalb eines Webservers Anfragen von Clients entgegennehmen und beantworten.
Jetty wird wie folgt unter Windows installiert:
- Jetty herunterladen: http://download.eclipse.org/jetty/stable-9/dist/
- das Archiv entpacken, am besten direkt im Root, also z.B. C:\jetty\
- in der Konsole in den Ordner wechseln und mit "java -jar start.jar" starte.
- die Frage der Windows-Firewalj ggf. bejahen.
- im Browser "localhost:8080" eintragen.
- wenn alles gut gelaufen ist, dann erscheint die Begrüßungsseite des Jetty-Servers

2. TEST

Jetzt sind wir bereit den Echtzeit-demo-chat zu starten und anzutesten.
-  CometD herunterladen: http://download.cometd.org/
- das Archiv entpacken.
- in das "cometd-demo" Verzeichnis wechseln.
- in der Konsole "mvn jetty:deploy-war" ausführen.
- im Browser "localhost:8080" eintragen.
- wenn alles gut gelaufen ist, dann erscheint im Browser die CometD Startseite.
- hier können wir verschiedene Chat-Versionen ausprobieren.

Im nächsten Teil werden wir diese Technologie in eigene Anwendung anbinden.

Montag, 16. Juli 2012

SYMFONY: sfDoctrineGuard installieren (ver 1.3 und 1.4)


Folgende Schritte müssen erfolgen um das Plugin erfolgreich  zu installieren:

1.1. Installieren:

        symfony plugin:install sfDoctrineGuardPlugin
 
1.2. Das Model aufbauen:

symfony doctrine:build-model
symfony doctrine:build-filters
symfony doctrine:build-sql
 
1.3. Tabellen in die DB exportieren:
 
        symfony doctrine:insert-sql
 
1.4. Asserts des Plugins zu Verfügung stellen:
 
        Symfony plugin:publish-asserts
 
1.5. sfGuard Module in das frontend und backend einbinden:
   In der settings.yml folgenden Eintrag hinzufügen:
               -für das backend:
 
        all:
     .settings:
           enabled_modules:    [default, sfGuardAuth, sfGuardGroup, 
                                sfGuardUser, sfGuardPermission]
 
        -für das frontend: 
 
        all:
         .settings:
           enabled_modules:    [default, sfGuardAuth]
 
1.6. Das login und security Modul des sfGuard als Standard festlegen:
               In der settings.yml folgenden Eintrag einbinden:
 
           login_module:           sfGuardAuth
           login_action:           signin
 
           secure_module:          sfGuardAuth
           secure_action:          secure
  
1.7.  Die Eltren-Klasse für myUser in sfGuardSecurity änden:
class myUser extends sfGuardSecurityUser
{
}
  
1.8. Neue Routen in der routing.yml hinzufügen:
 
sf_guard_signin:
  url:   /login
  param: { module: sfGuardAuth, action: signin }
 
sf_guard_signout:
  url:   /logout
  param: { module: sfGuardAuth, action: signout }
 
sf_guard_password:
  url:   /request_password
  param: { module: sfGuardAuth, action: password }
 
1.9. Cash leeren:
 
               cash clearen: symfony cc
 
1.10. Unter der Adresse:

http://www.mein-server.com/backend.php/sfGuardUser

erhalten Sie jetzt eine Übersicht aller Benutzer und die Möglichkeit neue zu erstellen und vorhandene zu bearbeiten