Ist es möglich, eine Web-App zu erstellen, die mithilfe eines zentralen Servers direkte Verbindungen zu anderen Benutzern derselben Web-App herstellen kann? Ich stelle mir einen Prozess vor, der dem Stanzen von UDP-Löchern ähnelt.
Ich habe über die neue WebSockets-API in HTML5 gelesen, aber anscheinend müssen Sie die Verbindung mit einem WS-kompatiblen Server herstellen, bevor die Vollduplex-Verbindung beginnen kann. Ich denke mehr über einen Prozess nach, um direkte Verbindungen zwischen Clients herzustellen, wobei ein Server nur am ersten Handshake beteiligt ist.
HINWEIS: Java-Applets zählen nicht. Ich interessiere mich nur für Standard-Browsertechnologien.
javascript
ajax
html
Peter O.
quelle
quelle
Antworten:
Anstelle intelligenter Vermutungen finden Sie hier eine fundierte Antwort:
HTML 5 plant, Peer-to-Peer-Verbindungen von Javascript aus zuzulassen, aber diese Verbindungen werden NICHT RAW-TCP sein.
Die vollständige Spezifikation finden Sie unter http://dev.w3.org/html5/websockets/
jrh
BEARBEITEN: Unter besonderer Bezugnahme auf Peer-to-Peer-Verbindungen sehen Sie sich diese Links an:
Es ist wichtig zu beachten, dass die Fähigkeiten noch verhandelt werden. Es wird schön sein, "lokale Chat" -Web-Apps erstellen zu können :)
jrh
quelle
UPDATE 17.10.2012: Diese Funktionalität ist jetzt in Chrome Stable v22 vorhanden. Um diese Funktionalität in Chrome nutzen zu können, müssen zwei Flags in Chrome aktiviert sein: // flags:
Anschließend können Sie die AppRTC-Demoseite besuchen, um die Demo auszuprobieren. Weitere Informationen zum Einrichten von Chrome für die Verwendung der Peer-to-Peer-Funktionalität und zum Aktivieren der Geräteerfassung finden Sie auf der Seite WebRTC - Ausführen der Demos .
UPDATE: Die Ingenieure von Ericcson Labs verfügen über einen Proof of Concept in einem WebKit-Build, der HTML5-Peer-to-Peer-Konversationsvideos erstellt .
In ihrem Blog finden Sie Demonstrationen der Technologie in Aktion sowie Diagramme und Erklärungen zur Funktionsweise der Technologie.
Sie arbeiten daran, dies zu stabilisieren und an das WebKit-Repository zu binden.
quelle
Ja, endlich.
Zum jetzigen Zeitpunkt (2017) ist WebRTC ein Standardbestandteil der meisten modernen Browser (etwa 70% der verwendeten Browser) und ermöglicht Multimedia-Streaming, Peer-to-Peer und Locher.
Dokumente, Beispielcode und Live-Beispiele für WebRTC finden Sie unter html5rocks.com .
Laut caniuse.com und html5rocks.com unterstützen die folgenden Browser WebRTC:
Volle Unterstützung: Edge 14, Firefox 22, Firefox Android 55
Teilweise Unterstützung: Android Browser 56, Chrome 20, Chrome Android 29, Edge 12, Firefox 17, Opera 18, Opera Android 20, Opera Mobile 12, UC Browser Android 11.4
Zukünftige Unterstützung ( Q3 2017): Chrome für iOS 11, Safari 11 für iOS 11 und OS X 10.11
Keine Unterstützung: IE, IE Mobile, Opera Mini
Die Sättigungsrate von WebRTC ist auf Apple-Geräten begrenzt, da Safari 11 noch nicht veröffentlicht wurde und iOS 11 oder OS X 10.11 erfordert. Obwohl WebRTC aus früheren Upgrade-Trends hervorgeht, sollte es bis 2018 auf rund 75% der iOS-Geräte und bis 2020 zu 100% verfügbar sein.
quelle
Es gibt eine Reihe von Gründen, warum dies schwierig wäre:
WebSockets wurde entwickelt, um das zweite dieser Probleme zu lösen, aber (absichtlich, wie ich erwarte) nicht die beiden anderen. Wenn sie in der HTML5-Spezifikation über Peer-to-Peer sprechen, sprechen sie über Vollduplex-Kommunikation zwischen dem Server und dem Client, nicht zwischen einem Client und einem anderen.
Es wäre jedoch einfach, einen geeigneten Netzwerkstapel über Websockets zu implementieren - mit der Maßgabe, dass die gesamte Kommunikation noch über den Server erfolgen müsste. Ich habe gesehen, dass dies mit langem Polling gemacht wurde (ein Freund von mir an der Uni hat einen vollständigen TCP / IP-Stack mit langem Polling geschrieben).
quelle
I second harschath.jr: Sie könnten sehr gut einen Server haben, der als Verzeichnis fungiert (wobei "Ursprünge" jedes verbundenen Agenten offengelegt werden ; Ursprung ist Schema + Host + Port wie in Draft-Abarth-Ursprung , wobei das Schema entweder "ws" ist. oder "wss"). Sie können dann Peer-to-Peer-WebSocket-Verbindungen initiieren. Die SOP wird dank CORS durchgearbeitet . Dies bedeutet natürlich, dass jeder Agent (dh ein Browser) seinen eigenen WebSocket-Server (à la Opera Unite) einbetten muss.
Machen Sie es in der Zwischenzeit auf XMPP / IRC / etc.-Weise: Keine Peer-to-Peer-Verbindung, sondern WebSocket-Verbindungen zu einem zentralen Server (oder Netzwerk!), Um Nachrichten an die verbundenen Agenten weiterzuleiten (eventuell mithilfe eines bestimmten WebSocket). Unterprotokoll ")
BEARBEITEN: Beachten Sie, dass all dies tatsächlich außerhalb des Anwendungsbereichs von HTML5 liegt (all diese Dinge waren einst Teil von HTML5, wurden jedoch in ihre eigenen Spezifikationen aufgeteilt).
quelle
Die ganze Idee von Web Sockets war es, die Probleme mit Firewalls und Proxys zu lösen. Http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket
quelle