Java Reference
In-Depth Information
Um einem WebSocket jetzt eine Gegenstelle zur Verfügung zu stellen, benötigen wir natür-
lich einen passenden Server. Nun ist die Nutzung von WebSockets samt dem ws-Protokoll
noch relativ neu und herkömmliche Server können meist noch nicht damit umgehen bzw.
sind inefektiv bei der Verwaltung von mehreren ofenen WebSocket-Verbindungen. Es gibt
aber auch jetzt schon eine Reihe von serverseitigen Implementierungen, Servern und APIs,
die den Umgang mit WebSockets und dem ws-Protokoll gestatten, etwa Jetty im Java-Umfeld,
EventMachine bei Ruby oder SuperWebSocket unter dem .NET-Framework.
Insbesondere gibt es aber seit einiger Zeit eine sehr interessante serverseitig nutzbare
Implementierung von JavaScript mit Namen Node.js beziehungsweise NodeJS ( http://
nodejs.org ) . Node.js wird ot als „serverseitiges JavaScript“ bezeichnet, allerdings ist das -
wie wir schon besprochen haben - so nicht ganz korrekt. Aber man kann damit auf jeden
Fall serverseitiges JavaScript ausführen. Wir sind darauf ja schon eingegangen und jetzt ist
ein guter Zeitpunkt, auch einmal serverseitiges JavaScript konkret einzusetzen. Wir
haben ja in dem ersten Kapitel dieses Framework vorgestellt und installiert und im Buch
schon gelegentlich angedeutet. Node.js basiert auf Chromes JavaScript-Laufzeitumgebung
V8 und dient als eine allgemeine serverseitige Plattform zum Betrieb von Netzwerkanwen-
dungen, wie eben auch Webserver.
14.2.5.1■Einführung in node.js
Wenn Sie unter Node.js programmieren wollen, können Sie ganz konventionell JavaScript
einsetzen. Allerdings können Sie nur mit purem JavaScript programmieren, was die Engine
bereitstellt. Insbesondere fehlt die DOM-Schnittstelle, aber so etwas haben wir ja bei den
Web Workern auch schon gehabt. Dafür stellt das Node.js-Framework aber eine ganze
Reihe anderer Objekte zur Verfügung, um die speziellen Anforderungen an so ein Frame-
work bereitzustellen. Damit können Sie Zugrife auf das Dateisystem, Datenbanken, Netz-
werkverbindungen etc. durchführen. Das geht hier auch per JavaScript, weil man nicht
durch die Sandbox eines Browsers gehindert wird, sondern eben in der Umgebung eines
Frameworks mit Serverfunktion arbeitet. Sie arbeiten ja nicht auf dem Clientrechner eines
Besuchers.
Node.js ist eine eventbasierte JavaScript-Laufzeitumgebung, die massiv mit Callbacks arbei-
tet. Statt bei einer nebenläuigen Arbeit wie dem Hören auf verschiedene Clientanfragen
mit echten Threads zu arbeiten (wie es etwa in Java gemacht wird), arbeitet Node.js hinge-
gen mit einem einzigen Thread und verarbeitet den Code eben sequenziell, aber eventba-
siert - wir kennen das ja schon beispielsweise von Web Workern. Diese Arbeitsweise hat die
Vorteile, dass die Ausführung von Code nicht zwingend geblockt wird, bis eine andere
Anweisung verarbeitet wurde, und ist gleichzeitig viel ressourcenschonender als echtes
Multithreading. Aus diesem Grund sind die meisten Operationen in Node.js grundsätzlich
„nicht blockierend“, was auf eine konsequente Verwendung von Callbacks hinausläut, etwa
so etwas, wenn man auf dem Dateisystem des Rechners lesen möchte 4 :
Listing 14.17■ Lesen einer Datei in Node.js
fs.readFile(dat.txt', 'utf8', function(err, data) {
if (err) throw err;
4 Das geht wie gesagt auch per JavaScript, weil man nicht durch die Sandbox eines Browsers gehindert wird,
sondern auf dem Server-Rechner arbeitet.
 
Search WWH ::




Custom Search