101 votes

Le HTML5 permettra-t-il aux applications web d'établir des connexions HTTP de type peer-to-peer ?

Est-il possible de créer une application web qui, à l'aide d'un serveur central, pourrait créer des connexions directes avec d'autres utilisateurs de la même application web ? J'imagine un processus similaire au hole punching UDP.

J'ai lu des articles sur la nouvelle API WebSockets dans HTML5, mais il semble que vous deviez initier la connexion avec un serveur compatible WS avant que la connexion entièrement duplexée puisse commencer. Je pense plutôt à un processus permettant d'établir des connexions directes entre les clients, sans qu'un serveur ne s'en mêle uniquement lors de la poignée de main initiale.

NOTE : Les applets Java ne comptent pas. Je ne m'intéresse qu'aux technologies standard des navigateurs.

112voto

jrharshath Points 10422

Au lieu de suppositions intelligentes, voici une réponse éclairée :

HTML 5 prévoit d'autoriser les connexions peer to peer à partir de javascript, mais ces connexions NE SERONT PAS du TCP brut.

Le cahier des charges complet peut être consulté à l'adresse suivante http://dev.w3.org/html5/websockets/

jrh

EDIT : pour une référence spécifique aux connexions peer to peer, consultez ces liens :

Il est important de noter que les capacités sont encore en cours de négociation. Il sera agréable de pouvoir créer des applications web de "chat local" :)

jrh

29voto

jmort253 Points 16929

MISE À JOUR 17/10/2012 : Cette fonctionnalité existe désormais dans Chrome Stable v22. Afin d'utiliser cette fonctionnalité dans Chrome, il faut activer deux drapeaux dans chrome://flags :

  • Activer MediaStream
  • Activer PeerConnection

Vous pouvez alors visiter le Page de démonstration de l'AppRTC pour essayer la démo. Voir le WebRTC - Exécution des démonstrations pour obtenir des instructions plus détaillées sur la configuration de Chrome afin d'utiliser la fonctionnalité peer to peer et d'activer la capture de périphériques.


UPDATE : Les ingénieurs d'Ericcson Labs ont réalisé une preuve de concept dans une version de WebKit qui fait Vidéo conversationnelle d'égal à égal HTML5 .

Sur leur blog, ils proposent des démonstrations de la technologie en action, ainsi que des diagrammes et des explications sur le fonctionnement de la technologie.

Ils travaillent à la stabilisation et à l'intégration de cette fonctionnalité dans le référentiel WebKit.

4voto

jwoolard Points 1905

Il y a un certain nombre de raisons pour lesquelles cela peut être délicat :

  1. Les pare-feu (et même les simples NAT) rendraient ce type de connexion difficile à un niveau protocolaire bien inférieur à celui du protocole HTTP. Avec ma casquette de sécurité informatique, cela me semble être un merveilleux moyen d'ouvrir des ports arbitraires sur une machine, simplement en visitant un site web - et cela serait donc bloqué de manière agressive par pratiquement tous les systèmes informatiques des entreprises.
  2. HTTP est par nature un protocole client-serveur. Bien qu'il soit raisonnablement facile de simuler des communications duplex en utilisant l'interrogation longue (ainsi que quelques autres techniques), ce n'est pas particulièrement efficace.
  3. Cela ouvrirait une grande brèche pour les attaques XSS.

WebSockets est conçu pour résoudre le second de ces problèmes, mais (délibérément, je suppose) pas les deux autres. Quand ils parlent de peer-to-peer dans la spécification HTML5, ils parlent de communications full duplex entre le serveur et le client, pas entre un client et un autre.

Cependant, il serait simple d'implémenter une pile réseau appropriée au-dessus des websockets - à condition que toutes les communications soient toujours effectuées par le serveur. J'ai vu cela se faire en utilisant le polling long (un de mes amis à l'université a écrit une pile TCP/IP complète en utilisant le polling long).

0voto

Thomas Broyer Points 45499

Je suis d'accord avec harshath.jr : vous pourriez très bien avoir un serveur agissant comme un répertoire (exposant les "origines" de chaque agent connecté ; l'origine étant scheme+host+port comme dans projet-abarth-origine avec le schéma "ws" ou "wss"). Vous pouvez alors lancer des connexions WebSocket de pair à pair ; le système SOP en cours de réalisation grâce à CORS . Bien entendu, cela signifie que chaque agent (c'est-à-dire le navigateur) devrait intégrer son propre serveur WebSocket (à la Opera Unite).

En attendant, utilisez la méthode XMPP/IRC/etc. : pas de connexion peer-to-peer mais des connexions WebSocket vers un serveur central (ou un réseau !) pour transmettre des messages aux agents connectés (en utilisant éventuellement un "sous-protocole" WebSocket spécifique).

EDIT : notez que tout ceci est en fait en dehors de la portée de HTML5 (toutes ces choses faisaient autrefois partie de HTML5 mais ont été séparées dans leurs propres spécifications).

0voto

goldeneye13 Points 9

L'idée de base des sockets Web était de résoudre les problèmes liés aux pare-feu et aux proxies. http://www.kaazing.org/confluence/display/KAAZING/What+est+un+HTML+5+WebSocket

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X