{"id":386,"date":"2009-12-13T20:02:55","date_gmt":"2009-12-13T18:02:55","guid":{"rendered":"http:\/\/loicmathieu.free.fr\/wordpress\/?p=386"},"modified":"2010-01-31T11:42:42","modified_gmt":"2010-01-31T09:42:42","slug":"chti-jug-html5-websocket-et-autres-protocole-de-communication","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/chti-jug-html5-websocket-et-autres-protocole-de-communication\/","title":{"rendered":"Ch&#8217;ti JUG: HTML5: WebSocket et autres protocole de communication"},"content":{"rendered":"<div>Jeudi s&#8217;est tenu dans les locaux d&#8217;<a id=\"x9v1\" title=\"Adeo\" href=\"http:\/\/www.groupe-adeo.com\/\">ADEO<\/a> une session du <a id=\"di.m\" title=\"Ch'ti Jug\" href=\"http:\/\/chtijug.org\/\">Ch&#8217;ti Jug<\/a> sur HTML5 et tout particuli\u00e8rement les WebSockets: <a class=\"url\" rel=\"external nofollow\" href=\"http:\/\/www.kaazing.com\/blog\/?p=207\">Kaazing HTML5 WebSocket Talk at the Ch\u2019ti JUG Meeting in Lille, France<\/a>\n\nPour ceux qui ne savent pas ce qu&#8217;est le Ch&#8217;ti Jug ou ce qu&#8217;est un Jug, voir l&#8217;introduction de mon article sur la session pr\u00e9c\u00e9dente:\u00a0 <a href=\"http:\/\/loicmathieu.free.fr\/wordpress\/index.php\/informatique\/session-chti-jug-sur-les-technologies-google\/\" target=\"_blank\">Ch\u2019ti Jug: les technologies Google<\/a>\n\nUne petite phrase de notre h\u00f4te, le groupe ADEO, qui rassemble entre autre les enseigne Leroy Merlin et Weldom. C&#8217;est donc ce qu&#8217;on appel dans le jargon des SSII un &#8220;client final&#8221;, et c&#8217;est la premi\u00e8er fois qu&#8217;une session du JUG se tient chez un client final. Le responsable des developpement de chez ADEO qui nous a re\u00e7u (je ne me rappel plus de son nom ni de sa fonction exacte) nous as expliquer la d\u00e9marche tr\u00e8s simple et que beaucoup d&#8217;autre client finaux (ou DSI) devrait mettre en place. Il fait en sorte que ses \u00e9quipes de d\u00e9veloppement s&#8217;organisent en communaut\u00e9 pour partager leur savoir et progresser ensemble. Et c&#8217;est dans cette optique qu&#8217;il trouve tout naturel de supporter les communaut\u00e9s ext\u00e9rieures qui permettent \u00e0 ses \u00e9quipes de prolonger en dehors du bureau leur esprit de communaut\u00e9 et de continuer \u00e0 grandir dans leur travail (l\u00e0 je trouve que je l&#8217;ai presque aussi bien dit que lui:) ).\n\nBon, apr\u00e8s cette longue digression, venons en a la pr\u00e9sentation elle m\u00eame. Elle \u00e9t\u00e9 assur\u00e9 par <a href=\"http:\/\/chtijug.org\/speakers#Peter-Lubbers\" target=\"_blank\">Peter Lubbers<\/a> de chez <a id=\"ljrs\" title=\"Kaazing\" href=\"http:\/\/www.kaazing.com\/\">Kaazing<\/a>, qui \u00e9t\u00e9 de passage \u00e0 Paris pour une formation et as accept\u00e9 de venir faire un tour dans le nord avant de repartir dans la Silicon Valley. Et ce qu&#8217;on peut dire c&#8217;est que la pr\u00e9sentation \u00e9t\u00e9 de grande qualit\u00e9, digne des grandes conf\u00e9rences payantes de la communaut\u00e9 Java.\n\nPour commencer, Peter nous as expos\u00e9 le probl\u00e8me, \u00e0 grand renfort d&#8217;exemple et de d\u00e9mo: aujourd&#8217;hui de plus en plus d&#8217;applications web riche (RIA, Rich Web Application) n\u00e9cessitent une communication temps r\u00e9elle (ou quasi temps r\u00e9elle). Les protocoles web existants ne sont pas capable de faire \u00e7a, ils sont bas\u00e9 sur HTTP qui ne permet qu&#8217;une communication half-duplexe (soit montante: une <em>request<\/em>, soit descendante: une <em>response<\/em>, mais pas les deux en m\u00eame temps).\nIl existe donc diff\u00e9rents patterns de d\u00e9veloppement pour la mise en place de solution pour que les RIA puisse s&#8217;approcher le plus possible d&#8217;une communication temps r\u00e9elle. Je ne vais pas vous les pr\u00e9senter tous en d\u00e9tail mais il sont bas\u00e9 sur ce qu&#8217;on appel le polling (normal ou long polling) et ils souffrent tous de trois choses:\n\n<ol><li>Limitation d&#8217;une communication half-duplex: une request est obligatoire avant toute response, le serveur ne peut pas envoyer de donn\u00e9es sans qu&#8217;une request ai \u00e9t\u00e9 initi\u00e9 au pr\u00e9alable.<\/li>\n\n<li> La communication temps r\u00e9elle n\u00e9cessite des mise \u00e0 jours constante qui n\u00e9cessite de nombreuses request\/response en un laps de temps tr\u00e8s court. Le protocole HTTP comprend des en-t\u00eate qui dans ce cas d&#8217;utilisation particulier peuvent \u00eatre importante. La taille d&#8217;une en-t\u00eate HTTP standard \u00e9tant de 500 \u00e0 2000 octets, dans le cas d&#8217;un polling vers 10 000 clients toutes les secondes bas\u00e9 sur une taille d&#8217;en-t\u00eate de 1K on a 200Ko\/s (10 000 * 1Ko * 2, une ent\u00eate pour la request et une pour la response) de bande passante prise uniquement pour les en-t\u00eate. Et si on calcul pour 100000 client avec un polling de 200ms (plus coh\u00e9rent pour donner une impression de temps r\u00e9el) \u00e7a nous donne 10Mo\/s de bande passante uniquement pour les ent\u00eates!<\/li>\n\n<li>Le browser ne pouvant acc\u00e9der qu&#8217;a un serveur HTTP, on a n\u00e9cessit\u00e9 de d\u00e9ployer un serveur d&#8217;application ou autre composant complexe pour r\u00e9aliser ce polling.<\/li>\n<\/ol>\nEt voila la solution, les WebSockets. Ils permettent de se passer de tout ces probl\u00e8mes, en voici le m\u00e9canisme, dans une explication simplifi\u00e9:\n\n<ol><li>Le browser demande un upgrade de la connexion HTTP en web socket.<\/li>\n\n<li>Le serveur acc\u00e8pte, la connexion HTTP devient un WebSocket vers le serveur: c&#8217;est un nouveau protocole directement au dessus de TCP.<\/li>\n\n<li>La communication s&#8217;effectue alors en full-duplexe: request et response sont maintenant ind\u00e9pendante et peuvent \u00eatre \u00e9mise en m\u00eame temps. Ce qui ouvre la possibilit\u00e9 d&#8217;une r\u00e9el push data vers le serveur.<\/li>\n\n<li>Les headers d&#8217;une request\/response WebSocket sont minimum: 1 octet de d\u00e9but et un octet de fin! La bande passante ne sert donc uniquement qu&#8217;aux donn\u00e9es!<\/li>\n<\/ol>\nOn peut m\u00eame imaginer faire directement communiquer un serveur de type JMS, Jabber ou autre directement avec un WebSocket sans passer par HTTP.\n\nDe plus, l&#8217;\u00e9tablissement d&#8217;une websocket est tr\u00e8s facile, via JavaScript on fait juste initialise juste un objet websocket en lui passant l&#8217;URL (de type ws:\/\/hote:port\/uri, websocket \u00e9tant un r\u00e9el protocole il a son propre addressage) et la m\u00e9thode javascript \u00e0 appeler en callback lors de la r\u00e9ception de la requ\u00eate: WebSocket \u00e9tant asynchrone.\n\nLes possibilit\u00e9 sont grande pour tout ce qui n\u00e9cessite des connexion de type temps r\u00e9elle.\n\nPeter Lubbers nous as ensuite pr\u00e9sent\u00e9 quelques autres nouveaut\u00e9s d&#8217;HTML5 acc\u00e8s sur la communications telle que:\n\n<ul><li>L&#8217;XmtlHttpRequest Level 2: XmlHttpRequest cross domaine (avec m\u00e9canisme de s\u00e9curisation)<\/li>\n\n<li>La communication cross domaine entre iframe (avec m\u00e9canisme de s\u00e9curisation)<\/li>\n\n<li>Les PostEvents<\/li>\n\n<li>Et bien d&#8217;autres choses &#8230;<\/li>\n<\/ul>\nTout \u00e7a est bien beau, mais pour l&#8217;instant, seul les nighly builds de chrome (projet chromium) supportent ces nouveaut\u00e9s (et normalement la future version de Firefox, la 3.6, les supportera). En attendant: Kaazing a une solution:\nKaazing a cr\u00e9er une framework qui permet d&#8217;utiliser ces nouveaut\u00e9, et si le browser ne le supportent pas nativement il va les \u00e9muler en utilisant soit un plugin du browser (flash, ActiveX, &#8230;) soit du JavaScript au mieux de ce que supporte le browser.\nEn plus, la soci\u00e9t\u00e9 propose une passerelle qui permet d&#8217;acc\u00e9der directement \u00e0 une multitude de protocoles directement depuis des websocket sans passer par un serveur applicatif, en gros il permet de faire passerelle entre le protocole websocket et des protocoles telle que JMS ou Jabber. Allez sur le site de Kaazing si vous cherchez \u00e0 en savoir plus.\n\nVoila une conf\u00e9rences tr\u00e8s compl\u00e8te sur le sujet et de grande qualit\u00e9. Merci Peter et merci le Ch&#8217;ti Jug!<\/div>","protected":false},"excerpt":{"rendered":"<p>Jeudi s&#8217;est tenu dans les locaux d&#8217;ADEO une session du Ch&#8217;ti Jug sur HTML5 et tout particuli\u00e8rement les WebSockets: Kaazing HTML5 WebSocket Talk at the Ch\u2019ti JUG Meeting in Lille, France Pour ceux qui ne savent pas ce qu&#8217;est le Ch&#8217;ti Jug ou ce qu&#8217;est un Jug, voir l&#8217;introduction de mon article sur la session pr\u00e9c\u00e9dente:\u00a0 Ch\u2019ti Jug: les technologies Google Une petite phrase de notre h\u00f4te, le groupe ADEO, qui rassemble entre autre les enseigne Leroy Merlin et Weldom&#8230;.<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/chti-jug-html5-websocket-et-autres-protocole-de-communication\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[118,116,117,14],"class_list":["post-386","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-chti-jug","tag-html5","tag-javascript","tag-web"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":399,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/ch%e2%80%99ti-jug-glassfish-esb\/","url_meta":{"origin":386,"position":0},"title":"Ch\u2019ti Jug: GlassFish ESB","author":"admin","date":"Monday March  1st, 2010","format":false,"excerpt":"Jeudi 21 janvier s\u2019est tenu une session du Ch\u2019ti Jug sponsoris\u00e9e par\u00a0 Cap Gemini sur GlassFish ESB : GlassFish ESB avec CAPGEMINI. Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle j\u2019ai\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":391,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/chti-jug-drools-v5-et-drools-planner\/","url_meta":{"origin":386,"position":1},"title":"Ch&#8217;ti Jug: Drools v5 et Drools Planner","author":"admin","date":"Saturday February 13th, 2010","format":false,"excerpt":"Jeudi 21 janvier s'est tenu dans les locaux de l'Universit\u00e9 de Lille 1 une session du Ch'ti Jug sponsoris\u00e9e par Cylande sur Drools:\u00a0 Drools, avec Cylande et l'Universit\u00e9 Lille 1 Pour ceux qui ne savent pas ce qu'est le Ch'ti Jug ou ce qu'est un Jug, voir l'introduction de mon\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":566,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/chti-jug-lili-et-cassandra\/","url_meta":{"origin":386,"position":2},"title":"Ch&#8217;ti JUG : Lili et Cassandra","author":"admin","date":"Thursday December 15th, 2011","format":false,"excerpt":"Le 12 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur Lili et Cassandra deux outils autour des bases de donn\u00e9es NoSql. La pr\u00e9sentation de Lili a \u00e9t\u00e9 faite par Stevens Noel et celle sur Cassandra par J\u00e9r\u00e9my Sevellec. Ayant d\u00e9j\u00e0 \u00e9crit\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":377,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/session-chti-jug-sur-les-technologies-google\/","url_meta":{"origin":386,"position":3},"title":"Ch&#8217;ti Jug: les technologies Google","author":"admin","date":"Wednesday November 11th, 2009","format":false,"excerpt":"Hello, Lundi j'ai \u00e9t\u00e9 \u00e0 la session du Ch'ti Jug sur les technologies Google qui s'est pass\u00e9 \u00e0 l'ISEN et \u00e9tait sponsoris\u00e9e par SII. C'\u00e9tait la premi\u00e8re fois que j'assistais \u00e0 un \u00e9v\u00e8nement organis\u00e9 par le Ch'ti Jug et comme c'\u00e9tait int\u00e9ressant, j'aimerais partager avec vous l\u00e0 dessus. Ch'ti Jug?\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"Google Wave","src":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200 1x, https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=525%2C300 1.5x"},"classes":[]},{"id":408,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/ch%e2%80%99ti-jug-git-et-mockito\/","url_meta":{"origin":386,"position":4},"title":"Ch\u2019ti Jug: GIT et Mockito","author":"admin","date":"Wednesday May 26th, 2010","format":false,"excerpt":"Mardi 20 avril s'est d\u00e9roul\u00e9 une session du Ch'ti JUG sur GIT et Mockito sponsoris\u00e9 par ProxiAD : GIT et Mockito avec ProxiAD Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":419,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/chti-jug-nosql\/","url_meta":{"origin":386,"position":5},"title":"Ch&#8217;ti JUG : NoSQL","author":"admin","date":"Monday December 20th, 2010","format":false,"excerpt":"Le 2 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur les technologie NoSQL anim\u00e9 par Olivier Mallassi. L'intervenant a commenc\u00e9 la conf\u00e9rence par un bref historique de la mani\u00e8re dont les donn\u00e9es on \u00e9t\u00e9 stock\u00e9es dans le monde de l'informatique: Au\u2026","rel":"","context":"In &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts\/386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=386"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/posts\/386\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}