Coder Social home page Coder Social logo

merite's Introduction

Merite

Installation

Copie du dépôt GitHub :

$ git clone https://www.github.com/LoOTW/merite

Installation de la bonne version de node avec nvm :

$ nvm install 6.11.0

Rajouter une des lignes suivantes au fichier /etc/hosts, en tapant par exemple la commande nano /etc/hosts :

::ffff:127.0.0.1        merite

ou

127.0.0.1               merite

Exécution

Installation des dépendances :

$ npm install

Le répertoire "./node_modules" est alors créé : il contient tous les modules externes du projet.

Compilation :

$ npm run build

(build et lance le serveur Chat, équivalent à npm run start1)

Pour lancer le serveur du jeu 2, il faut utiliser la commande

$ npm run start2

Dans certains cas, une utilisation précédente du port 3000 lève une erreur. Il suffit alors d'utiliser la commande suivante :

$ sudo fuser -k 3000/tcp

Il faut alors ouvrir 4 onglets différents à l'adresse merite:3000, ces 4 "utilisateurs" sont disposés en anneau et peuvent alors commencer à communiquer.

Fonctionnement - legacy

Recommandations concernant Javascript

  • Utiliser ECMAscript 2015.

Gestion des modules

  • côté serveur : utiliser l'API de Node
  • côté client : utiliser l'API du navigateur

cf. https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

Format des données : JSON

Messages

{
 emetteur : String,
 identifiant : String,
 destinataire : String
 type : String,
 contenu : String,
}

Protocole de communication

Côté client

  • Le client initie une WebSocket avec le serveur.
  • Le client envoie son identité (pseudo).
  • Le client envoie un message au format JSON spécifié.
  • Le client reçoit un message au format JSON spécifié.

Côté serveur

  • Le serveur répond à la requête de création de WebSocket.
  • Le serveur reçoit l'identité d'un client.
  • Le serveur reçoit un message au format JSON spécifié.
  • Le serveur envoie un message au format JSON spécifié.

Formalisation

données

  • message
    • emetteur
    • destinataire

Serveur

Canaux

  • initier(rep)
  • serveur_p
  • canal(TYPE, msg) : canal bi-directionnel

Etat du serveur

  • Port(p) : port utilisé pour la prochaine communication
  • C(i) : compteur des clients
  • Nom(i, n) : nom n du client i
  • Description(i, n, canal) : ième client décrit par n et communiquant par canal
  • Autorisation(i, j) : communication de i vers j autorisée
- initier(rep) & Port(p) -> rep(serveur_p) & Port(p+1)

- serveur_p(canal) & C(i) & Nom(i, n)
  ->
  canal(NOM, n)
  & C(i+1) & Nom(i, n) & Description(i, n, canal)

- canal(ENVOI, msg) & Description(i, msg.emetteur, canal)
  ->  
  Transit(i, msg, canal)
- canal(msg) & ¬Description(i, msg.emetteur, canal)
  ->  
  canal(ERREUR, msg.emetteur " non associé à " canal)

- Transit(i, msg, canal)
  & Description(j, msg.destinataire, canalDest) & Autorisation(i, j)
  ->
  canal(OK, msg) & canalDest(TRANSIT, msg)
  & Description(j, msg.destinataire, canalDest) & Autorisation(i, j)
- Transit(i, msg, canal)
  & ¬Description(j, msg.destinataire, canalDest)
  ->
  canal(ERREUR, msg.destinataire " inconnu")
- Transit(i, msg, canal)
  & Description(j, msg.destinataire, canalDest) & ¬Autorisation(i, j)
  ->
  canal(ERREUR, "Interdit vers " msg.destinataire)

Organisation

Trois axes pour organiser le code

  • fonctionnalités
    • communication
  • serveur / client
  • modèle (données) / vue (html)

Cf. Express qui donne une architecture type.

Travail à faire

  • TODO Réaliser les fonctions de communication
  • TODO Définir les messages
  • TODO Spécifier le jeu 1

merite's People

Contributors

lootw avatar elisaprio avatar hgrall avatar mevin15 avatar bboit avatar

Watchers

James Cloos avatar  avatar

Forkers

mevin15

merite's Issues

Menu

Menu de démarrage du jeu

TS Doc

(avec Document This ?)

Connexion au serveur

Connexion par domaine et par pseudo

Implique configuration du réseau en entier (en fixe pour l'instant)

On part sur 3 domaines de 4 utilisateurs

Reorganiser projet

  • décider d'une organisation globale pour le projet
  • réorganiser le projet
  • Inclure le script du lancement du serveur tchat des le debut
  • fichiers saas plutôt que style dans le composant

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.