SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Django et XMPP
Présentation de l'intervenant
●   Jean-Michel ARMAND aka MrJmad

●   http://twitter.com/mrjmad
●   http://j-mad.com/blog/
●   http://hybird.org
Licences
●   Le contenu de cette présentation est en licence
    creative commons Paternité (
    http://creativecommons.org/licenses/by/2.0/fr/),
    paternité Jean-Michel ARMAND

●   Le poney utilisé en illustration est lui aussi en
    licence Creative Commons Paternité,
    Djangocong en paternité.
C'est quoi XMPP ?
C'est quoi XMPP ?
●   Protocole extensible de message et de
    présence
●   Basé sur une archi client/serveur
●   Échange décentralisé de messages instantanés
    ou non
●   En format XML
●   Découpé en deux parties :
    ●   Protocole de base
    ●   XEP (XMPP Extension Proposal)
Quand ne pas utiliser
      XMPP ?
Quand ne pas utiliser XMPP ?
●   Pour de la communication inter process, même
    nominative
●   Pour de la délégation de tache avec des
    producteurs / consommateurs.
Pourquoi utiliser
    XMPP ?
Pourquoi utiliser XMPP ?
●   Parce que c'est hype
●   Parce que c'est le futur du Web
●   Parce que c'est stateful, pas comme dans le
    Web
●   Parce qu'on peut faire plein de choses très
    sympathique.
Pourquoi utiliser XMPP ?
●   Et sinon....
●   Un système de présence et de ressource bien
    pensé
●   Plein de XEP sympa
●   Du XML tout partout
●   Un mécanisme de déclaration et de découverte
    de ressource qui peut être utile
Les librairies ?
(ou : c'est la loose, y en a pas et elles sont merdiques...)
Les librairies XMPP
●   Twisted Words         ●   Xmmpppy

●   Wokkel                ●   PyXMPP

●   jabber.py             ●   SleekXMPP

                          ●   XMPPony
Les librairies XMPP
●   SleekXMPP
    ●   http://wiki.github.com/fritzy/SleekXMPP
●   PyXMPP
    ●   http://pyxmpp.jajcus.net/
SleekXMPP
●   Développement actif (dernier commit il y a trois
    jours)
●   Design par plugin, chaque XEP est un plugin
●   Un nombre important de XEP gérée :
    ●   4, 9, 30, 45, 50
    ●   60, 78, 86, 92, 99
PyXMPP
●   Développement actif (dernier commit il y a trois
    jours)
●   Pas mal de XEP gérées. (presque autant que
    SleekXMPP
●   Peu de doc hormi l'API.
Twisted et Wokkel
●   Ben c'est du twisted quoi donc :
    ●   Faut embarquer tout twisted
    ●   Mécanisme des reactor par forcément sympathique
        dans notre cas d'utilisation
    ●   Gestion de rien, tout est basé sur les chemins
        XPATH
Utilisations ?
●   Envoyer des statuts à un utilisateur à travers
    son client de messagerie instantanée
    ●   Twitter
    ●   Identi.ca
    ●   FriendFeed...
●   Permettre au django de 'poser des questions' à
    un admin en push et lui permettre de répondre
Les XEP cools
XEP-0009: Jabber-RPC
●   Du xmlrpc à travers XMPP
●   On enregistre des fonctions qui peuvent ensuite
    être appelées (logique).
XEP-0009: Utilisation ?
●   Faire du xmlrpc ..
XEP-0045: Multi-User Chat




C'est comme IRC, mais en XML
XEP-0045: Utilisation ?
●   La discussion, comme sur irc
●   Notifier à tout les utilisateurs présents, un
    message, d'un seul coup.
    ●   Twitter à base de chan xmpp, follow = joindre un
        chan
XEP-0060: Publish-Subscribe
●   Mécanisme de publication / souscription
●   On crée des topics sur lesquels on publie des
    contenus.
●   Les utilisateurs souscrivent aux topics qui les
    intéressent et sont notifiés quand un nouveau
    contenu est publié.
●   Problème de perf dans les implémentations
    actuelles
XEP-0060: Utilisation ?




Flux RSS en push et non en pull
XEP-0013: Flexible Offline Message
                  Retrieval
●   Comme du POP3, mais pour les messages
    XMPP
●   On peut récupérer soit :
    ●   Le nombre de messages
    ●   Les headers des messages
    ●   Tout
    ●   Un seul message
●   On peut supprimer des messages
XEP-0004: Data Forms
●   Comment décrire et envoyer des date à travers XMPP
●   Exemple :




Ca ressemble pas à un truc ?
XEP-0050: Ad-Hoc Commands
●   Permet de déclarer des commandes qui
    pourront être lancé par des users authentifiés.
●   Les commandes peuvent recevoir en argument
    des data forms
●   Les commandes peuvent renvoyer des
    dataforms.
●   On peut chainer les commandes (comme un
    wizard) avec des actions (prev, next, cancel,
    complete)
Deux manières de penser les choses
●   Django en temps que client XMPP
    ●   Comme un autre client, il se connecte à un serveur et
        échange avec d'autres utilisateur
    ●   Simplicité de la chose
    ●   On se limite aux XEP gérées par le serveur
●   Django en temps que serveur
    ●   Les utilisateurs se connectent directement en XMPP à
        Django
    ●   Peu de lib prévu pour
    ●   Gros boulot à faire
Django en temps que client
●   Des connexions déconnexion non stop pour
    chaque requête
    ●   BOUHHHH
●   Une commande django qui se lance à coté,
    communique avec le vrai django (passage de
    message timestampé en BD?)
    ●   OUAIISSSSS
Merci de votre attention

Contenu connexe

Tendances

Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPressChi Nacim
 
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra Publicis Sapient Engineering
 
PHP : écrire et déployer des applications maintenables !
PHP : écrire et déployer des applications maintenables !PHP : écrire et déployer des applications maintenables !
PHP : écrire et déployer des applications maintenables !Microsoft
 
Postman - Dev/var 15
Postman - Dev/var 15Postman - Dev/var 15
Postman - Dev/var 15Jonathan SAEZ
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesPascal Armand
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011Olivier BAZOUD
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring BatchOlivier BAZOUD
 
Web server local
Web server localWeb server local
Web server localkaabi zahra
 
Les applications réactives, un nouveau paradigme pour relever les défis de l'...
Les applications réactives, un nouveau paradigme pour relever les défis de l'...Les applications réactives, un nouveau paradigme pour relever les défis de l'...
Les applications réactives, un nouveau paradigme pour relever les défis de l'...Fabrice Croiseaux
 

Tendances (12)

Optimiser wordpress
Optimiser wordpressOptimiser wordpress
Optimiser wordpress
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPress
 
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
XebiConFr 15 - À la découverte des mécanismes internes de Cassandra
 
PHP : écrire et déployer des applications maintenables !
PHP : écrire et déployer des applications maintenables !PHP : écrire et déployer des applications maintenables !
PHP : écrire et déployer des applications maintenables !
 
Postman - Dev/var 15
Postman - Dev/var 15Postman - Dev/var 15
Postman - Dev/var 15
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performances
 
Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011
 
Paris JUG Spring Batch
Paris JUG Spring BatchParis JUG Spring Batch
Paris JUG Spring Batch
 
SdE 9 - Threads
SdE 9 - ThreadsSdE 9 - Threads
SdE 9 - Threads
 
Web server local
Web server localWeb server local
Web server local
 
Les applications réactives, un nouveau paradigme pour relever les défis de l'...
Les applications réactives, un nouveau paradigme pour relever les défis de l'...Les applications réactives, un nouveau paradigme pour relever les défis de l'...
Les applications réactives, un nouveau paradigme pour relever les défis de l'...
 

Similaire à Djangocong 2010 django-et_xmpp

Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.frliberation_dev
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Cours PHP 1/4 - Pierre Rudloff
Cours PHP 1/4 - Pierre RudloffCours PHP 1/4 - Pierre Rudloff
Cours PHP 1/4 - Pierre RudloffStrasWeb
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016kraeger
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08Loïc Descotte
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages webJean-Pierre Vincent
 
Introduction à PHP - Forum PHP 2010 - AFUP
Introduction à PHP - Forum PHP 2010 - AFUPIntroduction à PHP - Forum PHP 2010 - AFUP
Introduction à PHP - Forum PHP 2010 - AFUPNicolas Silberman
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisChipway
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1fayway
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 
2008-11-08 xmpp jabber for all at iut orleans
2008-11-08 xmpp jabber for all at iut orleans2008-11-08 xmpp jabber for all at iut orleans
2008-11-08 xmpp jabber for all at iut orleanslgilbon
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !Carles Sistare
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!David Caramelo
 
XMPP et Interopérabilité
XMPP et InteropérabilitéXMPP et Interopérabilité
XMPP et InteropérabilitéNyco
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementgplanchat
 

Similaire à Djangocong 2010 django-et_xmpp (20)

Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.fr
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Cours PHP 1/4 - Pierre Rudloff
Cours PHP 1/4 - Pierre RudloffCours PHP 1/4 - Pierre Rudloff
Cours PHP 1/4 - Pierre Rudloff
 
Apache kafka big data track
Apache kafka   big data trackApache kafka   big data track
Apache kafka big data track
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08
 
Forum PHP 2014 day 1
Forum PHP 2014 day 1Forum PHP 2014 day 1
Forum PHP 2014 day 1
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages web
 
Introduction à PHP - Forum PHP 2010 - AFUP
Introduction à PHP - Forum PHP 2010 - AFUPIntroduction à PHP - Forum PHP 2010 - AFUP
Introduction à PHP - Forum PHP 2010 - AFUP
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à Paris
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 
XML
XMLXML
XML
 
2008-11-08 xmpp jabber for all at iut orleans
2008-11-08 xmpp jabber for all at iut orleans2008-11-08 xmpp jabber for all at iut orleans
2008-11-08 xmpp jabber for all at iut orleans
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!
 
XMPP et Interopérabilité
XMPP et InteropérabilitéXMPP et Interopérabilité
XMPP et Interopérabilité
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 

Djangocong 2010 django-et_xmpp

  • 2. Présentation de l'intervenant ● Jean-Michel ARMAND aka MrJmad ● http://twitter.com/mrjmad ● http://j-mad.com/blog/ ● http://hybird.org
  • 3. Licences ● Le contenu de cette présentation est en licence creative commons Paternité ( http://creativecommons.org/licenses/by/2.0/fr/), paternité Jean-Michel ARMAND ● Le poney utilisé en illustration est lui aussi en licence Creative Commons Paternité, Djangocong en paternité.
  • 5. C'est quoi XMPP ? ● Protocole extensible de message et de présence ● Basé sur une archi client/serveur ● Échange décentralisé de messages instantanés ou non ● En format XML ● Découpé en deux parties : ● Protocole de base ● XEP (XMPP Extension Proposal)
  • 6. Quand ne pas utiliser XMPP ?
  • 7. Quand ne pas utiliser XMPP ? ● Pour de la communication inter process, même nominative ● Pour de la délégation de tache avec des producteurs / consommateurs.
  • 9. Pourquoi utiliser XMPP ? ● Parce que c'est hype ● Parce que c'est le futur du Web ● Parce que c'est stateful, pas comme dans le Web ● Parce qu'on peut faire plein de choses très sympathique.
  • 10. Pourquoi utiliser XMPP ? ● Et sinon.... ● Un système de présence et de ressource bien pensé ● Plein de XEP sympa ● Du XML tout partout ● Un mécanisme de déclaration et de découverte de ressource qui peut être utile
  • 11. Les librairies ? (ou : c'est la loose, y en a pas et elles sont merdiques...)
  • 12. Les librairies XMPP ● Twisted Words ● Xmmpppy ● Wokkel ● PyXMPP ● jabber.py ● SleekXMPP ● XMPPony
  • 13. Les librairies XMPP ● SleekXMPP ● http://wiki.github.com/fritzy/SleekXMPP ● PyXMPP ● http://pyxmpp.jajcus.net/
  • 14. SleekXMPP ● Développement actif (dernier commit il y a trois jours) ● Design par plugin, chaque XEP est un plugin ● Un nombre important de XEP gérée : ● 4, 9, 30, 45, 50 ● 60, 78, 86, 92, 99
  • 15. PyXMPP ● Développement actif (dernier commit il y a trois jours) ● Pas mal de XEP gérées. (presque autant que SleekXMPP ● Peu de doc hormi l'API.
  • 16. Twisted et Wokkel ● Ben c'est du twisted quoi donc : ● Faut embarquer tout twisted ● Mécanisme des reactor par forcément sympathique dans notre cas d'utilisation ● Gestion de rien, tout est basé sur les chemins XPATH
  • 17. Utilisations ? ● Envoyer des statuts à un utilisateur à travers son client de messagerie instantanée ● Twitter ● Identi.ca ● FriendFeed... ● Permettre au django de 'poser des questions' à un admin en push et lui permettre de répondre
  • 19. XEP-0009: Jabber-RPC ● Du xmlrpc à travers XMPP ● On enregistre des fonctions qui peuvent ensuite être appelées (logique).
  • 20. XEP-0009: Utilisation ? ● Faire du xmlrpc ..
  • 21. XEP-0045: Multi-User Chat C'est comme IRC, mais en XML
  • 22. XEP-0045: Utilisation ? ● La discussion, comme sur irc ● Notifier à tout les utilisateurs présents, un message, d'un seul coup. ● Twitter à base de chan xmpp, follow = joindre un chan
  • 23. XEP-0060: Publish-Subscribe ● Mécanisme de publication / souscription ● On crée des topics sur lesquels on publie des contenus. ● Les utilisateurs souscrivent aux topics qui les intéressent et sont notifiés quand un nouveau contenu est publié. ● Problème de perf dans les implémentations actuelles
  • 24. XEP-0060: Utilisation ? Flux RSS en push et non en pull
  • 25. XEP-0013: Flexible Offline Message Retrieval ● Comme du POP3, mais pour les messages XMPP ● On peut récupérer soit : ● Le nombre de messages ● Les headers des messages ● Tout ● Un seul message ● On peut supprimer des messages
  • 26. XEP-0004: Data Forms ● Comment décrire et envoyer des date à travers XMPP ● Exemple : Ca ressemble pas à un truc ?
  • 27. XEP-0050: Ad-Hoc Commands ● Permet de déclarer des commandes qui pourront être lancé par des users authentifiés. ● Les commandes peuvent recevoir en argument des data forms ● Les commandes peuvent renvoyer des dataforms. ● On peut chainer les commandes (comme un wizard) avec des actions (prev, next, cancel, complete)
  • 28. Deux manières de penser les choses ● Django en temps que client XMPP ● Comme un autre client, il se connecte à un serveur et échange avec d'autres utilisateur ● Simplicité de la chose ● On se limite aux XEP gérées par le serveur ● Django en temps que serveur ● Les utilisateurs se connectent directement en XMPP à Django ● Peu de lib prévu pour ● Gros boulot à faire
  • 29. Django en temps que client ● Des connexions déconnexion non stop pour chaque requête ● BOUHHHH ● Une commande django qui se lance à coté, communique avec le vrai django (passage de message timestampé en BD?) ● OUAIISSSSS
  • 30. Merci de votre attention