Information Technology Reference
In-Depth Information
Benutzer jeweils um 70 Grad weiterspringen (die Anzahl der Benutzer kann
über das Array conn._server.manager abgefragt werden). Die Farbzuweisung
wird in der Variable user_cols gespeichert, wobei als Index die ID der Verbin-
dung ( conn.id ) verwendet wird. Die Variable msg wird mit der soeben erzeugten
Farbe und dem Hinweis, dass ein neuer Benutzer eingetreten ist, versehen und
als JSON-String mit der Methode conn.broadcast versendet. conn.broadcast ist
eine Funktion des node-websocket-server und versendet Nachrichten an alle
Clients außer an den, der das aktuelle Event ausgelöst hat - genau das, was wir
im vorliegenden Fall machen wollen: Alle Benutzer werden darauf aufmerk-
sam gemacht, dass ein neuer Benutzer dem Chat beigetreten ist.
conn.addListener("message", function(message) {
var msg = {};
message = message.replace(/</g, "&lt;");
message = message.replace(/>/g, "&gt;");
msg.text = message;
msg.user = conn.id;
msg.color = user_cols[conn.id];
conn.write(JSON.stringify(msg));
conn.broadcast(JSON.stringify(msg));
});
});
Die zweite Funktion, die auf das message -Event reagiert, ersetzt in der überge-
benen Zeichenkette ( message ) die Start- und Endzeichen für HTML-Tags, damit
kein Script-Code oder andere Tricks eingeschleust werden können. Eine seriö-
se Anwendung muss die Eingabe noch genauer prüfen, um mögliche Angriffs-
versuche abzuwehren. Immerhin wird die Nachricht an alle Clients versendet
und in deren Browser angezeigt, was ein geradezu ideales Angriffsszenario
darstellt. Wie schon beim connection -Event wird eine lokale Variable msg mit
den gewünschten Inhalten befüllt und als JSON-String versendet. Hier ge-
schieht das allerdings zweimal: zuerst mit der write() -Methode an den User
selbst und anschließend mit der broadcast() -Methode an alle anderen Benut-
zer.
Damit ist der Websocket-Server beinahe fertig. Was noch fehlt, ist ein Event-
Handler für geschlossene Verbindungen und der eigentliche Start des Servers.
server.addListener("close", function(conn) {
var msg = {};
msg.user = conn.id;
msg.color = user_cols[conn.id];
Search WWH ::




Custom Search