Une application de chat en temps réel construite à l'aide de Node.js, Express, Mongoose, Socket.io, Passport et Redis.
Vérifier la démo
Assurez-vous que Node.js et npm sont installés.
Cloner ou télécharger le référentiel
$ git clone https://github.com/OmarElGabry/chat.io.git
$ cd chat.io
Installer les dépendances
$ npm install
Modifiez le fichier de configuration dans app/config/config.json avec vos informations d'identification (voir Configurations d'installation).
Téléchargez et installez Redis.
Exécuter le serveur Redis (en tant qu'administrateur)
$ redis-server
Démarrer l'application
$ npm start
Votre application devrait maintenant s'exécuter sur localhost:3000.
Assurez-vous que Heroku Toolbelt est installé.
Créez une nouvelle application Heroku et transférez votre application de chat vers un référentiel distant Git
$ heroku create
$ git push heroku master
ou
Maintenant, vous devez configurer les variables de configuration sur Heroku.
{ dbURI, sessionSecret, facebookClientID, facebookClientSecret, twitterConsumerKey, twitterConsumerSecret }
(voir Configurations d'installation).Une dernière étape consiste à ajouter Redis en tant que module complémentaire sur Heroku.
Vous devez créer un compte de facturation même si le module complémentaire est gratuit.
Ouvrez votre application de chat dans le navigateur
$ heroku open
Les configurations en production seront attribuées à partir des variables d'environnement sur Heroku, tandis que les configurations de développement résident dans le fichier app/config/config.json .
Vous devez créer une base de données sur MongoLab, puis créer un utilisateur de base de données, obtenir l' MongoDB URI
et l'attribuer à dbURI
.
Vous devez enregistrer une nouvelle application sur Facebook et Twitter pour obtenir vos jetons grâce auxquels les utilisateurs peuvent accorder l'accès à votre application et se connecter en utilisant leurs comptes sociaux.
App ID
, App Secret
. Maintenant, vous pouvez attribuer l' App ID
à facebookClientID
et App Secret
à facebookClientSecret
.
Consumer Key
, Consumer Secret
. Vous pouvez désormais attribuer la Consumer Key
à twitterConsumerKey
et Consumer Secret
à twitterConsumerSecret
.
Il peut renvoyer à votre hôte local ; http://localhost:3000/auth/facebook/callback
Lors du déploiement sur Heroku, vous aurez quelque chose qui ressemblera à ceci : http://my-chat-app.herokuapp.com/auth/facebook/callback
La session a besoin d'une chaîne aléatoire pour garantir que l'identifiant de session dans le navigateur est aléatoire. Cette chaîne aléatoire est utilisée pour chiffrer l'identifiant de session dans le navigateur. Pourquoi ? Pour éviter que l'identifiant de session ne devienne.
Mongoose est utilisé pour interagir avec un MongoDB hébergé par MongoLab.
Il existe deux schémas ; utilisateurs et chambres.
Chaque utilisateur dispose d'un nom d'utilisateur, d'un mot de passe, d'un identifiant social et d'une photo. Si l'utilisateur est connecté via un nom d'utilisateur et un mot de passe, alors l'identifiant social doit être nul, et s'il est connecté via un compte social, le mot de passe sera nul.
Chaque pièce a un titre et un ensemble de connexions. Chaque élément du tableau de connexions représente un utilisateur connecté via un socket unique ; objet composé de {userId + socketId} . Les deux ensemble sont uniques.
Chaque modèle enveloppe l'objet Mongoose Model, le remplace et fournit certaines méthodes. Il existe deux modèles ; Utilisateur et salle.
Les sessions dans les applications Express sont mieux gérées à l’aide du package Express-session. Les données de session sont stockées localement sur votre ordinateur, tandis qu'elles sont stockées dans la base de données sur l'environnement de production. Les données de session seront supprimées lors de la déconnexion.
L'utilisateur peut se connecter en utilisant soit un nom d'utilisateur et un mot de passe, soit se connecter via un compte social. L'authentification des utilisateurs se fait à l'aide de Passport. Passport dispose d'une documentation complète et étape par étape sur la façon de mettre en œuvre chaque mode d'authentification.
Avoir une connexion active ouverte entre le client et le serveur afin que le client puisse envoyer et recevoir des données. Cela permet une communication en temps réel à l'aide de sockets TCP. Ceci est rendu possible par Socket.io.
Le client commence par se connecter au serveur via un socket (peut-être également attribué à un espace de noms spécifique). Une fois les connexions établies, le client et le serveur peuvent émettre et écouter des événements.
Deux espaces de noms sont utilisés ; /rooms
et /chatroom
.
Et cela ne va pas sans dire que vous devez surveiller votre candidature. Winston peut se connecter et détecter les exceptions non interceptées. Tous les journaux sont affichés dans la console et enregistrés dans le fichier debug.log .
Sur Heroku, vous pouvez surveiller les journaux en cliquant sur Plus -> Afficher les journaux en haut à gauche du tableau de bord de votre application.
J'ai écrit ce scénario pendant mon temps libre pendant mes études. Si vous le trouvez utile, soutenez le projet en faisant passer le message.
Contribuez en créant de nouveaux problèmes, en envoyant des demandes d'extraction sur Github ou en envoyant un e-mail à : [email protected]
Construit sous licence MIT.