JAVASCRIPT : Node JS & Socket.io (janvier 2012)

Pour un projet particulier, j'ai eu à valider un choix d'architecture basé sur NodeJS.

Autant coté code, c'est facile, autant coté installation, j'ai trouvé que le web manquait de documentation claire et précise. Du coup je vous fait partager le résultat de mes recherches.

Coté serveur

Installation des dépendances

apt-get install build-essential
apt-get install python-software-properties
apt-get install libssl-dev libreadline-dev
apt-get install git-core curl

Installation de nvm

Pour la gestion de NodeJS et de ses versions, je vous conseille de passer par nvm (node version manager).

J'ai mis le code dans /opt/nvm pour être plus "propre"

git clone git://github.com/creationix/nvm.git /opt/nvm
. /opt/nvm/nvm.sh
nvm install v0.6.3
nvm alias default v0.6.3
nvm ls
nvm help

Si vous voulez pouvoir utiliser nvm en ligne de commande quand vous voulez, je vous conseille de modifier votre .bashrc

cat >> ~/.bashrc << TXT
. /opt/nvm/nvm.sh
TXT

Installation de npm

npm (node package manager) est un outil pratique pour gérer les "plugins" qui fonctionnent avec NodeJS.

curl http://npmjs.org/install.sh | sh

Installation de express et socket.io

Express JS est un "framework" fonctionnant sur NodeJS qui vous simplifiera grandement la vie.

socket.io est un "package" qui vous simplifie l'usage de websockets avec un système de fallback via composant flash.

cd /var/www
npm install express
npm install socket.io
npm install -g express
express
npm install -d

L'installation des packages via la commande npm install [package] est la partie simple.

Ce qui m'a pris du temps à découvrir et qui est mal documenté c'est de faire le npm install -g express qui permet d'exposer dans le shell la commande express qui elle s'occupera de vous installer le framework. npm install -d s'occupe fanilement d'installer les dépendances et de résoudre ce qu'il vous manque pour faire fonctionner le tout (socket.io entre autres).

Coté client

Si vous voulez faire comme pour notre projet sur page web générée par PHP mais qui utilise socket.io pour communiquer en client/serveur avec un serveur NodeJS, vous devez comme indiqué dans la FAQ de socket.io (pas forcément évident à trouver...) rajouter dans votre page HTML une variable javascript WEB_SOCKET_SWF_LOCATION qui pointe vers le bon fichier flash qui sert de fallback.

<script type="text/javascript">
WEB_SOCKET_SWF_LOCATION = "le_chemin_qui_va_bien/WebSocketMain.swf";
</script>