
Installation
Aktuelle Version von node.js unter http://nodejs.org/. Notwendige Pakete zur Installation sind u.a.
python-dev und libssl-dev.
./configure --prefix=/usr/local/nodejs make make install
Für die Einbindung von Erweiterungen für node.js wird das Tool npm genutzt, welches man unter http://npmjs.org/ finden kann. Bei der Installation sollte das Verzeichnis zu node.js dem PATH zugeordnet werden.
PATH=$PATH:/usr/local/nodejs/bin/ curl http://npmjs.org/install.sh | sh
Zwei nützliche Erweiterungen für node.js sind zum einen express.js http://expressjs.com/, welches einem sehr vereinfacht HTTP-Server zu erstellen. Und zum anderen natürlich socket.io http://socket.io/ für die Socket-Kommunikation mit dem Browser / Client.
npm install express npm install socket.io
Programmierung
Es wird ein Server und ein Client benötigt. Der Server startet auf einem beliebigen Port und reagiert auf Ereignisse, wie die Verbindung eines neuen Clients oder dem Aufruf einer gewünschten Aktion. In diesem Fall soll der Server die Anzahl der verbundenen Clients zählen und bei jedem Verbinden und Trennen eines Clients diese Anzahl anpassen und in Echtzeit an alle verbundenen Clients übertragen.
var express = require( '/usr/local/nodejs/lib/node_modules/express' );
var server = express.createServer();
server.listen( 88 );
var io = require( '/usr/local/nodejs/lib/node_modules/socket.io' ).listen( server );
var browsers = 0;
io.sockets.on( 'connection', function ( socket ) {
browsers++;
io.sockets.emit( 'show', { num: browsers } );
socket.on( 'disconnect', function () {
browsers--;
io.sockets.emit( 'show', { num: browsers } );
} );
} );
Der Client meldet sich beim Server an. Öffnet die Socket-Verbindung und reagiert auf die ihm gesendeten Daten. Natürlich kann auch dieser Ereignisse an den Server übertragen.
<script type="text/javascript">
windowOnLoad( function() {
var socket = io.connect( 'http://www.kinglee.de:88' );
socket.on( 'connect', function () {
// alert( 'connected' );
} );
socket.on( 'show', function ( data ) {
$('users-online').innerHTML = data.num;
} );
} );
</script>
<div id="users-online"></div>
| Longitude | 9° 12" 57,496' |
| Latitude | 48° 29" 19,845' |