| client | ||
| server | ||
| .gitignore | ||
| database.sql | ||
| install_push001.sh | ||
| install_push002.sh | ||
| install_push003.sh | ||
| README.md | ||
| Vagrantfile | ||
Projet TestPush
Disclaimer
Ceci est un TEST, le code est dégueulasse, pas commenter et pas réfléchis. C'est un test a la va vite fait d'une traite de maniere empirique. Vous êtes prévenues!
Objectif
Le but de ce projet est de se familiariser avec une méthode de communication API/PUSH.
Le test tourne ici autour de Node.js / Express / Socket.io
Prérequis
Vous devez avoir d'installé - vagrant - virtualbox
Les VMs
3 VMs seront générés par le Vagrantfile - push_001 - name: push_001 - Rôle: database (postgresSQL) - IP: 192.168.5.210 - CPU: 1 - RAM: 1024 - push_002 - name: push_003 - Rôle: Server (Node JS + App Server) - IP: 192.168.5.211 - CPU: 1 - RAM: 1024 - push_003 - name: push_003 - Rôle: Client (Node JS + App Client) - IP: 192.168.5.212 - CPU: 1 - RAM: 1024
Comment ça marche ?
Le serveur push_002 est un serveur web qui fourni une API(NodeJS - Express) ainsi qu'un websocket(NodeJS - Socket.io)
L'API sert des données fournies par un serveur PostgreSQL situé sur le serveur push_001.
Une seule table se trouve dans la base de donnée. La table user, avec deux colonnes contenant un iduser et un username associé. Il y a 502 lignes numéroté de 1 à 502.
Le serveur push_003 heberge une app "client" qui peut simuler plusieurs connexion (parametre dans le fichier manager.js, par defaut 25 connexions).
API et Applications
http://192.168.5.211:3000/ ne retourne rien rien
http://192.168.5.211:3000/users retourne l'ensemble des utilisateurs présent dans la base de donnée
http://192.168.5.211:3000/users/USERID retourne les information d'un utilisateur (remplacer USERID par un numéro entre 1 et 502)
http://192.168.5.211:3000/connected retourne l'ensemble des sessions connecté. ID de session et user ID associé
http://192.168.5.211:3000/count retourne le nombre total de connectés
http://192.168.5.211:3000/socket fournis une app web qui simule un client. L'app choisi un userid aléatoirement en 1 et 502. Sur demande du serveur elle peut aller requeter l'API pour connaitre le nom associé a son userID
http://192.168.5.211:3000/admin fournis une app qui permet de remonter des informations du serveur. Le nombre de session websocket (rafraichis toutes les 5 secondes), des logs venants du serveurs, un bouton qui demande au serveur d'envoyer X requetes (Input "How many Tasks) a des clients choisi aléatoirement dans la liste de connecté. Les clients iront alors chercher dans l'API leur nom avant de l'afficher sur l'app web ou dans les logs de l'app client du serveur push_003.
Comment faire fonctionner tout ça?!
Une fois les prérequis installé, puis ce dépot récuperé, ouvrez un terminal a la racine du projet et tapez la commande vagrant up. Cela lancera l'ensemble des 3 serveurs.
Les serveur push_001(DB) et push_002(Server) sont entierement automatisé et les différentes app démareront en toute autonomie.
Vous pouvez tester les différents liens founirs plus haut dés que vagrant a fini son travail.
L'app client
Pour faire fonctionner cette app il vous suffit de vous connecter sur le serveur push_003.
Toujours a la racine du projet tapez vagrant ssh push_003. Vous vous retrouverez sur le serveur en question quelques secondes plus tard.
Deux possibilités:
- Vous rendre dans le dossier /var/www/myapp et lancer la commande ./manager.js. Ce qui lancera le programme et vous permettera de voir les retour dans le shell. (un ctrl+c fermera le programme ainsi que tous les clients ouverts)
OU
- taper les commandes suivantes:
- sudo systemctl start myapp.service pour lancer le service
- sudo journalctl -f -u myapp pour suivre les logs du service
Information de connexion
PostgreSQL: - Login: vagrant - Password: vagrant - adresse 192.168.5.210:5432
VMs: - Login: vagrant - Password: vagrant - preferez une connexion SSH via vagrant