Comment créer un canal de données dans une connexion homologue WebRTC?
Je suis en train d'apprendre comment créer un RTCPeerConnection
afin que je puisse utiliser le DataChannel
API. Voici ce que j'ai essayé à partir de ce que j'ai compris:
var client = new mozRTCPeerConnection;
var server = new mozRTCPeerConnection;
client.createOffer(function (description) {
client.setLocalDescription(description);
server.setRemoteDescription(description);
server.createAnswer(function (description) {
server.setLocalDescription(description);
client.setRemoteDescription(description);
var clientChannel = client.createDataChannel("chat");
var serverChannel = server.createDataChannel("chat");
clientChannel.onmessage = serverChannel.onmessage = onmessage;
clientChannel.send("Hello Server!");
serverChannel.send("Hello Client!");
function onmessage(event) {
alert(event.data);
}
});
});
Je ne suis pas sûr de ce qui va mal, mais je suis en supposant que la connexion est établie jamais, car aucun message n'est affiché.
Où puis-je en apprendre plus à ce sujet? J'ai déjà lu les Mise en route avec WebRTC - HTML5 Rocks tutoriel.
source d'informationauteur Aadit M Shah
Vous devez vous connecter pour publier un commentaire.
J'ai enfin réussi à le faire fonctionner après tamisage à travers un grand nombre d'articles: http://jsfiddle.net/LcQzV/
Nous avons d'abord créer les par les pairs connexions:
Lorsque le client se connecte au serveur, il doit ouvrir un canal de données:
Lorsque le client crée un canal de données, le serveur peut répondre:
Nous avons besoin d'ajouter un faux flux audio vers le client et le serveur pour établir une connexion:
Le client crée une offre:
Le serveur accepte l'offre et établit une connexion:
Ouf. Cela a pris un certain temps pour comprendre.
J'ai posté un résumé qui montre la configuration d'une connexion de données, compatible avec les deux Chrome et Firefox.
La principale différence est que, lorsque dans FF, vous devez attendre jusqu'à ce que la connexion est établie, dans google Chrome, c'est tout le contraire: il semble que vous avez besoin pour créer la connexion de données avant toutes les offres sont adressées en arrière/en avant:
L'autre différence est que le Chrome passe d'un objet événement à
.ondatachannel
alors que FF passe juste un cru de canal:Note que vous avez actuellement besoin Chrome Soirée a commencé avec
--enable-data-channels
pour que cela fonctionne ainsi.Ici est une séquence d'évènements que j'ai aujourd'hui (Février 2014) en Chrome. C'est pour un cas simplifié où les pairs 1 va diffuser de la vidéo par les pairs 2.
addIceCandidate
avec elleSetRemoteDescription
avec elle, puis faire une réponse & envoyerSetRemoteDescription
avec ellegetUserMedia
appel)getUserMedia
réussit, c'est un flux. AppeladdStream
sur le peer 1 par des pairs de l'objet de connexion.Je n'ai pas trouvé un moyen d'ajouter de la vidéo après l'étape 9. Lorsque je veux changer quelque chose, je reviens à l'étape 3.