Ich war begeistert von der Aussicht auf WebRTC, als ich anfangs davon hörte. Es klang wie Websockets, aber ohne einen Server. Leider haben alle Tutorials, die ich finden konnte, die Video- und Audioaspekte von WebRTC betont. Ich kann nichts über das Senden von Text/Daten/JSON zwischen Browsern finden. Könnten Sie mir helfen, ein einfaches "Hallo Welt" zu schreiben, das nur einige Daten von einem Browser zum anderen mit WebbRTC sendet?
Antworten
Zu viele Anzeigen?Dies ist ein Schuss ins Blaue, aber der letzte Entwurf der Web-API-Editoren hat eine DataChannel
Schnittstelle als Teil der Peer-to-Peer-Daten-API .
Allerdings ist die derzeitige Arbeitsentwurf verfügt nicht über diese API, so dass sie möglicherweise sehr neu und noch nicht implementiert ist.
DataChannel wurde jetzt in Firefox (18+) und Chrome (25+) implementiert, obwohl es noch in den Kinderschuhen steckt.
Weitere Informationen finden Sie in dem Artikel HTML5 Rocks Erste Schritte mit WebRTC .
Diese Funktion ist noch in keiner WebRTC-Implementierung vorhanden. Wie andere Poster bereits angedeutet haben, gibt es jetzt eine DataChannel-API im neuesten Entwurf der WebRTC-Redakteure, aber am Protokoll dafür wird noch gearbeitet. Es ist zu erwarten, dass diese API noch in diesem Jahr in Chrome und Firefox verfügbar sein wird.
Dies ist eine alte Frage, aber da ich begonnen habe, webRTC zu lernen, werde ich versuchen, sie zu beantworten.
Zunächst einmal ist das ein Missverständnis:
Es klang wie Websockets, aber ohne einen Server
Es gibt keine Möglichkeit, Daten zwischen WebRTC-Peers zu übertragen, bevor nicht einige Informationen (Verwaltung von Mediensitzungen, Netzwerkkonfiguration/Multimedia-Fähigkeiten der Knoten) ordnungsgemäß ausgetauscht und ausgehandelt wurden. Hierfür benötigen Sie einen Server und Signalisierung (die nicht Teil von webRTC ist: Sie können sie so implementieren, wie Sie wollen).
Wenn die Signalisierung abgeschlossen ist, müssen Sie Folgendes erstellen RTCPeerConnection mit etwas wie diesem:
if (navigator.webkitGetUserMedia) {
RTCPeerConnection = webkitRTCPeerConnection;
} else if(navigator.mozGetUserMedia){
RTCPeerConnection = mozRTCPeerConnection;
RTCSessionDescription = mozRTCSessionDescription;
RTCIceCandidate = mozRTCIceCandidate;
}
und dann:
var connection = new RTCPeerConnection(servers);
Danach können Sie Ihren Datenkanal zu dieser PeerConnection hinzufügen:
var dataChannel = connection.createDataChannel("channelName",{ reliable: true });
Wenn dies geschehen ist, können Sie einfach sendChannel.send('Any data you want');
und dieser sendet alle gewünschten Daten.
Wenn überhaupt, dann fand ich dieses Buch ist wirklich hilfreich . Es lässt eine Menge Fragen offen, aber für den ersten Anfang ist es gut.
Ich glaube, Matt weiß es schon, aber für Google-Gäste: Ja, das können Sie, indem Sie DataChannels verwenden.
Auf Ihrer Seite:
channel = somePeerConnection.createDataChannel("a Label");
channel.onopen = function() { channel.send("any thing") };
Auf der anderen Seite:
somePeerConnection.ondatachannel = function (evt) {
evt.channel.onmessage = function (evt) {
alert( evt.data );
};
};
Siehe diese Beispiele:
- See previous answers
- Weitere Antworten anzeigen