001 : Réalisation d'un chat en ligne
Dans le cadre d'un projet commun en classe qui fut réalisé par groupe ( 2 ou 3 élèves), nous avons décidé de choisir parmi une liste de plusieurs missions de mettre en oeuvre un chat en ligne. Celui-ci a pour objectif d'être utilisé afin de mettre en relation des étudiants, entreprises et professeurs dans la perspective d'établir un véritable réseau d'aide à la recherche de stage.
Il est par exemple possible de communiquer par messagerie instantanée du texte, émoji, joindre des fichiers(documents, images, vidéos...) mais également de partager des URL qui seront intégrés directement dans le cours de la conversation. Il sera ainsi possible de lancer une vidéo directement depuis le chat avec son URL ou encore y accéder en cliquant sur le texte brute rendu en lien accessible accompagné d'un descriptif.
Le chat est uniquement mis à disposition des membres étant inscrits. Une fois connecter l'utilisateur est visible par l'ensemble des autres membres qui sont connectés par la même occasion (pour l'instant pas de discussions hors ligne). Un compteur pour indiquer le nombre d'internautes connectés ainsi que le nom, l'avatar et l'id de ces derniers est également visibles de tous.
Un chat global est présent sur la page mais des discussions privées peuvent être tenues entre chaque utilisateur dès lors que ces derniers cliquent sur un profil visible dans le tableau des membres connectés.
Technologies utilisées :
- au niveau applicative nous avons décidé d'employer un bundle regroupant un ensemble d'outils efficaces et harmonieux afin de construire une application aisément. On peut citer WAMP et XAMPP.
Néanmoins loin de nous être arrêtés uniquement à ces outils on a préféré nous pencher sur le moteur SQL du nom de Sql Server plutôt qu'utiliser mysql mis à notre disposition par défaut par le bundle. Le bundle comprend également un serveur apache et un logiciel pour interpréter le langage de programmation qui est PHP sur lequel nous nous sommes reposé. Nous avons également utilisé un deamon pour gérer les sessions, celui-ci n'était pas compris dans le bundle et se nomme memcached.
- les langages auxquels nous avons eu recours sont les suivants : HTML, CSS(SCSS), PHP, JavaScript(JQuery), bash.
- la technologie des WebSockets qui est un standard pour une communication full-duplex persistant entre le client et le serveur. C'est notamment par ce biais que le caractère instantané des conversations sans actions préalables de l'utilisateur prend tout son sens. En effet le serveur peut envoyer une réponse au client sans sollicitation de ce dernier. Ainsi la complexité des requêtes et les lourdeurs notamment au niveau du serveur en sont considérablement moins impactées.
- le gestionnaire de session memcache par l'utilisation d'un driver à ajouter à PHP ( avec l'exécution d'un deamon) permet de partager les informations de session de l'utilisateur entre le serveur web apache et le serveur WebSocket qui doivent tous être sur un domaine unique afin de fonctionner en parallèle mais mis en service sur différents ports.
- le gestionnaire de dépendances composer afin de bénéficier de nombreuses bibliothèques.
- les frameworks, librairies, API sont pléthore dont l'incontournable Symfony en version 3. On peut citer également emojione, oscarotero/Embed, jquery-confirm, font-awesome, bootstrap, bootstrap notifyJS, cropper...