Programmation WEB. Introduction à Node.js. Programmation licence. IUT de Fontainebleau



Documents pareils
Principales caractéristiques

CHAPITRE 11. Temps réel Remy Sharp

Application Web et J2EE

L3 informatique TP n o 2 : Les applications réseau

Créer une «application web» avec AngularJS, nodejs et mongodb v Brouillon

4. SERVICES WEB REST 46

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Protocoles Applicatifs

Le serveur HTTPd WASD. Jean-François Piéronne

(structure des entêtes)

PROJET réalisé par. PROJET encadré par. HUET Geoffroy JOUBERT Adrien POTHIN Jean Philippe. LHOMMEAU Mehdi. Projet EI4, Avril 2013, Angers 1

Architectures Web Services RESTful

Architecture distribuée

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Serveurs de noms Protocoles HTTP et FTP

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Web Tier : déploiement de servlets

Hébergement de site web Damien Nouvel

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Architecture Orientée Service, JSON et API REST

Programmation Web. Madalina Croitoru IUT Montpellier

Protection des protocoles

Mise en œuvre des serveurs d application

Applications et Services WEB: Architecture REST

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

«Un tableau de bord médical en temps- réel à moindre coût»

Un serveur web léger et ouvert

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Messagerie asynchrone et Services Web

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Devenez un véritable développeur web en 3 mois!

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Francis Mignault. ! Coauteur : Expert Oracle Application Express. ! Membre du Oracle APEX Advisory Board apex.oracle.com/vote

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Veille technologique

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

07/03/2014 SECURISATION DMZ

Les Content Delivery Network (CDN)

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Environnements de Développement

Introduction au langage C

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Etude et développement d un moteur de recherche

Internet. Web Sécurité Optimisation

Introduction aux «Services Web»

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Développement des Systèmes d Information

DOM - Document Object Model

Bien architecturer une application REST

INF8007 Langages de script

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Technologies Web avancées. ING1 SIGL Technologies Web avancées

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

Géolocalisation. Remy Sharp

Programmation Internet Cours 4

Développement Web. Les protocoles

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Réseaux et protocoles Damien Nouvel

Divers éléments. Protocoles d'applications. Un agent Utilisateur. MUA - Agents Utilisateurs de Courriel. Simple Mail Transfer Protocol

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Dans l'épisode précédent

2 Formation utilisateur

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

SharePoint 2013 Développez en.net pour personnaliser SharePoint (Apps, REST, CSOM et Azure)

Module BD et sites WEB

Projet de programmation (IK3) : TP n 1 Correction

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Network musical jammin

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

«Cachez-moi cette page!»

Remote Method Invocation Les classes implémentant Serializable

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Introduction aux concepts d ez Publish

Pratique et administration des systèmes

Alfstore workflow framework Spécification technique

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Intégration de systèmes

Automatisation de l administration système

Documentation Technique

Mobile OGSI.NET: Grid Computing on Mobile Devices

Joomla! Création et administration d'un site web - Version numérique

Compte Rendu d intégration d application

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

Le modèle client-serveur

HTML5. Développement d applications Web. Visual Studio 2015 et TFS. L art et la manière. avec. Philippe DIDIERGEORGES

Transcription:

Introduction à Node.js IUT de Fontainebleau 4 juin 2015

1 Introduction 2 3 4 5

Sommaire Introduction 1 Introduction 2 3 4 5

Nodejs? Introduction Ce n est pas un framework! Programme (environnement) créé par Rayn Dahl en 2009, basé sur le moteur V8 javascript de Google. Utilise javascript comme langage. Orientée vers les applications réseaux.. Modéle asynchrone. Boucle d événement unique pour tous les clients.

Javascript Évenementiel Hors du navigateur Asynchrone Avec des fonctions pour serveur Utilise V8

Exemple : un (petit) serveur Web Le code Javascript var http = require( http ); http.createserver(function (req, res) { res.writehead(200, { Content-Type : text/plain }); res.end( Hello World\n ); }).listen(8080, 127.0.0.1 ); console.log( Server running at http://127.0.0.1:8080/ );))) On lance le programme >node example.js Server running at http://127.0.0.1:8080/

Sommaire Introduction 1 Introduction 2 3 4 5

Evénements objet.on( evt,function(args){ /* je traite l événement */ }); objet.emit( evt,args); /* emission d un * événement */

Sommaire Introduction 1 Introduction 2 3 4 5

Approche synchrone var rep1 = RequeteLongue(); var rep2 = AutreRequeteLongue(); La deuxième fonction commence après la terminaison de la première Cela peut être très pénalisant notamment si la première fonction est en attente d E/S.

Approche asynchrone RequeteLongue(function(err,data){ if (err){ /* mince!*/ }else{ /* youpi : data...*/ } }); AutreRequeteLongue(function(err,data){ if (err){ /* mince!*/ }else{ /* youpi : data...*/ } }); Une fonction réflexe (Callback) est exécutée quand le résultat est disponible.

Penser Callback UneFonction(args,function(err,data){ if (err){ /* gestion cas d erreurs */ }else{ /* data contient * le résultat */ } }); La plupart des librairies de nodejs utilise cette technique

Implantation Enregistrement fcts réflexes Requêtes, etc Boucle d évenements File System Exécution Callbacks Database Fin opérations Calculs Un seul thread exécute la boucle.

Ce modèle est utilisé par d autres programmes : Le serveur http Nginx. La couche graphique X11 d Unix.

Comparaison de performances On compare les performances, en situation à peu près identique de : Un serveur Apache. Un server nodejs ab -n 1000 -c 200 http://127.0.0.1/hello.html permet de mesurer le nombre de requêtes satisfaites par seconde.

Le code du serveur nodejs var http = require( http ); var fs= require( fs ); http.createserver(function (req, res) { res.writehead(200, { Content-Type : text/html }); var s=fs.createreadstream(./index.html ); s.on( open,function(){ s.pipe(res); }) s.on( end,function(){ res.end(); }); }).listen(8080, 127.0.0.1 ); console.log( Server running at http://127.0.0.1:8080/ );

Temps moyen de réponse 1000 900 800 700 600 500 400 300 200 100 Apache Nodejs 100 200 300 400 500 600 Concurrence : requêtes simultanées

Sommaire Introduction Express 1 Introduction 2 3 4 Express 5

Express Beaucoup de librairies intégrées Timers Process Events Buffers Streams Crypto File System REPL Net HTTP HTTPS TLS/SSL DNS UDP/Datagram URL Path var http = require( http ); var fs = require( fs ); var dns = require( dns );

Npm Introduction Express npm est un gestionnaire de paquets pour nodejs. https://www.npmjs.com/ Beaucoup de paquets disponibles : Express : framework web minimaliste. Socket.io : framework Serveur "temps réel". etc.

Express Introduction Express Exemple var express = require( express ); var app = express(); app.get( /, function (req, res) { res.send( Hello World ) }); app.listen(3000);

Routage basique Introduction Express // respond with "Hello World!" on the homepage app.get( /, function (req, res) { res.send( Hello World! ); }) // accept POST request on the homepage app.post( /, function (req, res) { res.send( Got a POST request ); }) // accept PUT request at /user app.put( /user, function (req, res) { res.send( Got a PUT request at /user ); }) // accept DELETE request at /user app.delete( /user, function (req, res) { res.send( Got a DELETE request at /user ); })

Template Introduction Express 1 Express a besoin de savoir ou sont les templates des vues : app.set( views, dirname+ /views ); 2 Express a besoin de connaître le moteur de template à utiliser : app.set( view engine, jade ); 3 On crée un template jade html head title!= title body h1!= message

Express 4 On crée la route avec la vue précédente comme réponse. app.get( /, function (req, res) { res.render( index, { title: Hey, message: Hello there! }); })

Sommaire Introduction 1 Introduction 2 3 4 5

WebSocket est une technologie "évoluée" qui permet d ouvrir un canal de communication interactif entre un navigateur (côté client) et un serveur. Avec cette API vous pouvez envoyer des messages à un serveur et recevoir ses réponses de manière événementielle sans avoir à aller consulter le serveur pour obtenir une réponse (polling). Le protocole WebSocket est décrit dans la RFC 6455 : http://tools.ietf.org/html/rfc6455

Api coté client très simple. [Constructor(in DOMString url, in optional DOMString protocol)] interface WebSocket { readonly attribute DOMString URL; // ready state const unsigned short CONNECTING = 0; const unsigned short OPEN = 1; const unsigned short CLOSED = 2; readonly attribute unsigned short readystate; readonly attribute unsigned long bufferedamount; // networking attribute Function onopen; attribute Function onmessage; attribute Function onclose; boolean send(in DOMString data); void close(); }; WebSocket implements EventTarget;

Api coté client très simple. var wsuri = "ws://echo.websocket.org/"; websocket = new WebSocket(wsUri); websocket.onopen = function(evt) { onopen(evt) }; websocket.onmessage = function(evt) { onmessage(evt) }; websocket.onclose = function(evt) { onclose(evt) }; websocket.onerror = function(evt) { onerror(evt) }; message = "on est le " + new Date().toString(); websocket.send(message);

Il existe plusieurs librairies implantant cette technologie pour nodejs : Socket.IO : http://socket.io/ WebSocket-Node : https://github.com/theturtle32/websocket-node

Socket.IO Introduction Le client hello.html Le serveur var socket; socket = io.connect( http://localhost:3000 ); socket.on( ok,function(data){ $("#reponse").empty().text(data.message); socket.emit( message,{ "message": Salut aussi! }); }); var app = require( express )(); var http = require( http ).Server(app); var io = require( socket.io )(http); app.get( /, function(req, res){ res.sendfile("./hello.html"); }); io.on( connection, function(socket){ console.log( a user connected ); socket.on( message,function(data){ console.log("message "+data.message); }); socket.emit( ok,{message: Salut }); }); http.listen(3000, function(){ console.log( listening on *:3000 ); });