HTML5 autorisera-t-il les applications Web à établir des connexions HTTP entre homologues?

StackOverflow https://stackoverflow.com/questions/1032006

  •  06-07-2019
  •  | 
  •  

Question

Est-il possible de créer une application Web qui, avec 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 à la perforation UDP.

J'ai entendu parler de la nouvelle API WebSockets dans HTML5, mais il semble que vous deviez établir la connexion avec un serveur compatible WS avant de pouvoir commencer la connexion en duplex intégral. Je pense davantage à un processus permettant d'établir des connexions directes entre les clients, un serveur s'impliquant uniquement dans la prise de contact initiale.

REMARQUE: les applets Java ne comptent pas. Je ne m'intéresse qu'aux technologies de navigateur standard.

Était-ce utile?

La solution

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

HTML 5 prévoit d'autoriser les connexions entre homologues à partir de javascript, mais ces connexions NE SERONT PAS EN RAW TCP.

La spécification complète est disponible à l'adresse http://dev.w3.org/html5/websockets/.

jrh

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

Il est important de noter que les capacités sont toujours en cours de négociation. Ce sera bien de pouvoir créer un & chat; chat local " applications Web:)

jrh

Autres conseils

UPDATE 10/17/2012: Cette fonctionnalité existe désormais dans Chrome Stable v22. Pour utiliser cette fonctionnalité dans Chrome, il faut activer deux indicateurs dans chrome: // indicateurs:

.
  • Activer MediaStream
  • Activer PeerConnection

Ensuite, vous pouvez visiter la page de démonstration AppRTC pour essayer la démonstration. Reportez-vous à la WebRTC - Exécution des démonstrations pour obtenir des instructions plus détaillées sur la configuration de Chrome pour qu'il utilise la fonctionnalité d'égal à égal et activation de la capture de périphérique.

MISE À JOUR: Les ingénieurs d'Ericcson Labs disposent d'une preuve de concept dans une version WebKit Vidéo conversationnelle HTML5 d'égal à égal .

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

Ils travaillent pour que cela soit stabilisé et validé dans le référentiel WebKit.

Oui, enfin.

Au moment de la rédaction de cet article (2017), WebRTC fait désormais partie intégrante de la plupart des navigateurs modernes (environ 70% de ceux utilisés) et permet la diffusion multimédia en continu, l’égal à égal et la perforation.

Des documents, des exemples de code et des exemples concrets de WebRTC sont disponibles à l'adresse html5rocks.com. .

Selon caniuse.com et html5rocks.com , les navigateurs suivants prennent en charge WebRTC:

Prise en charge complète: Edge 14, Firefox 22, Firefox Android 55
Prise en charge partielle: Navigateur Android 56, Chrome 20, Android 29, Edge 12, Firefox 17, Opera 18, Opera 20, Opera Mobile 12, Navigateur UC 11.4
Prise en charge future (Q3 2017): Chrome pour iOS 11, Safari 11 pour iOS 11 et OS X 10.11
Pas de support: IE, IE Mobile, Opera Mini

Le taux de saturation de WebRTC est limité sur les appareils Apple, car Safari 11 n’est pas encore disponible et nécessite iOS 11 ou OS X 10.11. Bien que dépassant les tendances des mises à niveau antérieures, WebRTC devrait être disponible sur environ 75% des appareils iOS d’ici 2018 et à 100% d’ici 2020.

Il y a un certain nombre de raisons pour lesquelles cela serait délicat:

  1. Les pare-feu (même les simples NAT) rendraient ce type de connexion difficile à une couche de protocole beaucoup plus basse que même HTTP. Avec mon chapeau de sécurité informatique, cela semble être un moyen formidable d’ouvrir des ports arbitraires sur une machine, en visitant simplement un site Web - il serait donc bloqué de manière agressive par la quasi-totalité des systèmes informatiques d’entreprise.
  2. HTTP est par nature un protocole client-serveur. Bien qu’il soit relativement facile de simuler des communications en duplex en utilisant une interrogation longue (ainsi que quelques autres techniques), cette solution n’est pas particulièrement efficace.
  3. Ceci ouvrirait un grand trou 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. Lorsqu'ils parlent d'égal à égal dans la spécification HTML5, ils parlent de communications en duplex intégral entre le serveur et le client, et non entre un client et un autre.

Cependant, il serait simple de mettre en place une pile réseau appropriée au-dessus des Websockets, à condition que toute la communication soit toujours effectuée via le serveur. J'ai vu cela se faire en utilisant une interrogation longue (un de mes amis chez Uni a écrit une pile TCP / IP complète en utilisant une interrogation longue).

Je deuxième harshath.jr: vous pourriez très bien avoir un serveur agissant comme un répertoire (exposant les "origines" de chaque agent connecté; origine étant schéma + hôte + port comme dans draft-abarth-origin , le schéma étant soit" ws ", soit" wss ". Vous pouvez ensuite initier des connexions WebSocket d'égal à égal; la SOP a été mise au point grâce à CORS . Bien entendu, cela signifie que chaque agent (navigateur, par exemple) devra intégrer son propre serveur WebSocket (à la manière de Opera Unite).

En attendant, faites-le de la même façon que XMPP / IRC / etc.: pas de connexion entre homologues mais WebSocket sur un serveur central (ou un réseau!) pour transmettre des messages aux agents connectés WebSocket spécifique "sous-protocole")

EDIT: notez que tout cela sort du cadre de HTML5 (tous ces éléments faisaient autrefois partie de HTML5 mais ont été séparés dans leurs propres spécifications)

Toute l’idée des Web Sockets était de résoudre les problèmes liés aux pare-feu et aux serveurs proxy http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top