Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. PHP et MySQL
  3. Énoncé 5 : La messagerie
Extrait - PHP et MySQL Entraînez-vous à développer une application collaborative
Extraits du livre
PHP et MySQL Entraînez-vous à développer une application collaborative Revenir à la page d'achat du livre

Énoncé 5 : La messagerie

Introduction

Durée

2 heures 20

Mots-clés

JavaScript, Node.js, websocket, broadcast, SMTP, cross domain origin.

Objectifs

PHP n’est pas un environnement fermé et isolé. Il s’associe fort bien à d’autres technologies. Ce chapitre dévoile quelques possibilités de montage pour réaliser un module de messagerie instantanée.

Prérequis

Pour valider les prérequis nécessaires, avant d’aborder le TP, répondez aux questions ci-après :

1.

Dans une application PHP, qui déclenche l’exécution de requêtes HTTP ?

 

a.

Le navigateur

 

b.

Le serveur web

 

c.

Le service d’applications

 

d.

HTML

2.

Quel est l’intérêt d’une websocket ?

 

a.

De chiffrer les communications web

 

b.

D’accélérer le débit d’information entre le navigateur et le serveur

 

c.

De relier directement entre eux les navigateurs

 

d.

D’initier des requêtes depuis le serveur

3.

Qu’est-ce que le protocole SMTP ?

 

a.

Un protocole de discussion live

 

b.

Un protocole de réception de messages

 

c.

Une norme d’envoi de messages électroniques

 

d.

Un standard de surveillance des réseaux

4.

Que désigne l’abréviation SSL ?

 

a.

Safe System Layer, système d’authentification des applications

 

b.

Secure Socket Layer, procédé de chiffrage des transmissions basé sur un algorithme asymétrique type RSA.

 

c.

Secure Service Language, standard de sécurisation des services web

 

d.

Strong Security Language, algorithme de cryptage base sur une clé symétrique de 2048 bits

5.

Quel est le langage...

Énoncé 5.1 Création d’un fil de discussion instantané avec Node.js et socket.io

Durée estimative : 45 minutes

Node.js est un environnement d’exécution d’applications serveur codées en JavaScript. Sa conception monothread et basée sur des événements le prédispose dans les applications temps réel à haute performance. Ce n’est donc pas surprenant que de nombreuses librairies lui soient consacrées, au rang desquelles figure socket.io. Cette librairie prend en charge la communication bidirectionnelle entre le navigateur et l’application serveur Node.js, employant les protocoles supportés par le navigateur les plus avantageux (websockets lorsque c’est possible, autrement en activant un protocole moins performant mais plus passe-partout tel que le long polling).

 Téléchargez Node.js depuis https://nodejs.org et suivez les instructions d’installation pour votre système d’exploitation (serveur).

Lancez la console de commande et vérifiez la version avec la commande suivante :

node -v 

Lancez l’interprète et testez une expression JavaScript :

355/113 

 Récupérez dans la solution (application/nodejs) l’application Node.js formée des fichiers teamup.js et package.json. Installez les packages à l’aide de la commande :

npm install...

Énoncé 5.2 Envoi de message à un utilisateur défini

Durée estimative : 20 minutes

La messagerie instantanée évolue pour permettre à deux utilisateurs de chatter en tête-à-tête.

 Modifiez le formulaire index de façon qu’on puisse choisir de communiquer avec tous les utilisateurs ou seulement l’un d’eux.

 Étudiez le script Node.js teamup.js et identifiez le type message servant à communiquer avec un seul utilisateur.

 Adaptez le code JavaScript client (c’est-à-dire exécuté par le navigateur) pour invoquer ce type de message.

 Testez l’envoi de message à un autre utilisateur connecté, puis à un autre utilisateur non connecté.

Énoncé 5.3 Gestion du statut connecté, non disponible, déconnecté

Durée estimative : 30 minutes

Ce TP est une transition vers le suivant ; lorsque les utilisateurs ne sont pas connectés, ils doivent recevoir leurs messages instantanés par mail. Lorsqu’ils ne sont pas disponibles mais connectés, aucun message ne doit leur être adressé. Il faut ainsi ajouter un statut à chaque utilisateur.

 Ajoutez à la barre de navigation une liste déroulante statuts comportant les valeurs En ligne, Ne pas déranger, Déconnecté.

 Recherchez dans l’application Node.js teamup.js le type de message pour mettre à jour le statut. Invoquez ce message statut en fonction de la sélection dans la liste située dans la barre d’état.

Recherchez dans l’application Node.js teamup.js le type de message pour indiquer qu’il y a des messages en attente. Signalez dans la barre de navigation la disponibilité de ces messages.

 À l’affichage de la page Messages, vérifiez s’il y a des messages en attente et faites-les apparaître.

 Dans la page Messages, affichez le statut de l’utilisateur sélectionné pour une discussion privée.

 Modifiez le code pour invoquer une action PHP sendoffline quand le statut est déconnecté.

Énoncé 5.4 Envoi des messages offline par mail avec un service Cloud

Durée estimative : 45 minutes

Nous sortons des sentiers battus avec ce TP. Plutôt que de développer un énième webmail, nous allons confier l’envoi des messages « offline » (voir précédemment) à un service de courrier sur le Cloud. Plusieurs fournisseurs existent, ils sont en grande majorité gratuits tant qu’on ne dépasse pas le routage de dizaines de milliers voire centaines de milliers de mails. Ce TP s’appuie sur Microsoft SendGrid, mais il est très facile à adapter avec le service AWS.

 Créez-vous un compte Microsoft Azure, en profitant de la période d’essai gratuite.

Au-delà de la période d’essai, les services sont facturés à l’utilisation. Le service d’envoi de mail SendGrid est lui-même gratuit tant que l’on n’envoie pas plus de 25 000 mails par mois.

 Connectez-vous au portail Microsoft Azure, allez dans Tous les services et recherchez SendGrid. Naviguez dans la rubrique SendGrid Accounts.

 Ajoutez un nouveau compte SendGrid en précisant les propriétés suivantes :

Name

teamupvotrenomvotreprenom

Password / Confirm Password

Indiquer un mot de passe à fournir par l’application PHP

Abonnement

Abonnement d’essai ou autre...