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 lu sur la nouvelle API WebSockets en HTML5, mais il semble que vous deviez initier la connexion avec un serveur compatible WS avant que la connexion en duplex intégral puisse commencer. Je pense plus à un processus pour établir des connexions directes entre les clients, avec un serveur n'intervenant que dans la poignée de main initiale.
REMARQUE: les applets Java ne comptent pas. Je ne suis intéressé que par les technologies de navigateur standard.
javascript
ajax
html
Peter O.
la source
la source
Réponses:
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 RAW TCP.
La spécification complète peut être trouvée à 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 des applications Web de "chat local" :)
jrh
la source
MISE À JOUR 17/10/2012: cette fonctionnalité existe désormais dans Chrome Stable v22. Pour utiliser cette fonctionnalité dans Chrome, il faut activer deux indicateurs dans chrome: // flags:
Ensuite, vous pouvez visiter la page de démonstration AppRTC pour essayer la démo. Consultez la page WebRTC - Exécution de la démonstration pour obtenir des instructions plus détaillées sur la configuration de Chrome pour utiliser la fonctionnalité peer to peer et l'activation de la capture d'appareil.
MISE À JOUR: Les ingénieurs d'Ericcson Labs ont une preuve de concept dans une version WebKit qui fait de la vidéo conversationnelle HTML5 Peer to Peer .
Ils ont des démonstrations sur leur blog de la technologie en action, ainsi que des diagrammes et des explications sur le fonctionnement de la technologie.
Ils travaillent à la stabilisation et à la validation de cela dans le référentiel WebKit.
la source
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 le streaming multimédia, le peer-to-peer et la perforation.
Des documents, des exemples de code et des exemples en direct pour WebRTC sont disponibles sur 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, Chrome Android 29, Edge 12, Firefox 17, Opera 18, Opera Android 20, Opera Mobile 12, UC Browser Android 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 sorti et nécessite iOS 11 ou OS X 10.11. Bien que projetant à partir des tendances de mise à niveau passées, WebRTC devrait être disponible sur environ 75% des appareils iOS d'ici 2018 et 100% d'ici 2020.
la source
Il y a un certain nombre de raisons pour lesquelles cela serait délicat:
WebSockets est conçu pour résoudre le deuxième 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 d'implémenter une pile de réseau appropriée au-dessus des Websockets - à condition que toutes les communications doivent toujours être effectuées via le serveur. J'ai vu cela faire en utilisant une longue interrogation (un de mes amis à Uni a écrit une pile TCP / IP complète en utilisant une longue interrogation).
la source
Je seconde 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 schéma + hôte + port comme dans draft-abarth-origin , le schéma étant soit "ws" ou "wss"). Vous pouvez alors lancer des connexions WebSocket peer-to-peer; la SOP en cours d' élaboration grâce à CORS . Bien sûr, cela signifie que chaque agent (c'est-à-dire le navigateur) devrait intégrer son propre serveur WebSocket (à la Opera Unite).
En attendant, faites-le de la manière XMPP / IRC / etc.: pas de connexion peer-to-peer mais des connexions WebSocket à un serveur central (ou réseau!) Pour passer des messages aux agents connectés (éventuellement en utilisant un WebSocket spécifique " sous-protocole ")
EDIT: notez que tout cela sort du cadre de HTML5 (toutes ces choses faisaient autrefois partie de HTML5 mais ont été divisées en leurs propres spécifications)
la source
L'idée générale des Web Sockets était de résoudre les problèmes avec les pare-feu et les proxies http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket
la source