Information Technology Reference
In-Depth Information
Die sendmsg() -Funktion, die bei jedem Tastendruck innerhalb des Textfeldes
ausgelöst wird, schickt den gesamten Inhalt des Textfeldes an den Websocket.
Wird die Verbindung zum Websocket aus irgendeinem Grund beendet (zum
Beispiel durch eine fehlende Netzwerkverbindung oder Serverprobleme), löst
das Websocket-Objekt das close -Event und damit die onclose -Funktion aus. In
unserem Beispiel setzen wir die Statuszeile auf offline in roter Farbe. Beim
Verlassen der Seite ( window.onunload ) schließen wir den Websocket explizit und
melden uns damit beim Server ab.
9.2.2 DerBroadcast-Server
Um das Beispiel zu vervollständigen, fehlt uns noch die Server-Komponente.
Wie eingangs erwähnt, verwenden wir für die Websocket-Beispiele in diesem
Buch die node.js -Runtime und den node-websocket-server. Didaktisch ist das
deshalb sehr günstig, weil wir dadurch nicht in eine andere Programmierspra-
che wechseln müssen und der Server-Code für Sie auch problemlos verständ-
lich sein sollte.
Der Server arbeitet, ähnlich wie der Client, event -gesteuert. Jede eingehende
Verbindung und jede eingehende Nachricht lösen ein connection - beziehungs-
weise ein message -Event aus, auf das wir im JavaScript-Code reagieren. Zu Be-
ginn des Scripts laden wir die node-websocket-server -Bibliothek, die im Unter-
verzeichnis lib/ liegt und den Namen ws.js hat. Die Variable server wird mit
einem neuen Websocket-Objekt belegt.
var ws = require(__dirname + '/lib/ws'),
server = ws.createServer();
var user_cols = {};
server.addListener("connection", function(conn) {
var h = conn._server.manager.length*70;
user_cols[conn.id] = "hsl("+h+",100%,30%)";
var msg = {};
msg.user = conn.id;
msg.color = user_cols[conn.id];
msg.text = "<em>Ein neuer Benutzer ist eingetreten</em>";
conn.broadcast(JSON.stringify(msg));
Der erste EventHandler ( connection ) kümmert sich um neue Verbindungen. Wie
auch im Beispiel in Kapitel 8.5, Beispiel: Knapp dran!, vergeben wir die Farbe
für den Benutzer schrittweise im HSL-Farbraum, wobei wir für jeden neuen
Search WWH ::




Custom Search