Décrivez le bogue
Les bibliothèques ne fonctionnent pas correctement.
DOMException : échec de l'exécution de 'setRemoteDescription' sur 'RTCPeerConnection' : échec de l'analyse de SessionDescription. [objet Objet] Ligne attendue : v=
sur http://localhost/sip-0.11.4%20 (1).js:9733:38
J'ai eu des problèmes dans la même section de code:
` /**
* Définissez la description distante sur l'implémentation multimédia sous-jacente
* @param {String} sessionDescription La description fournie par un message SIP à définir sur l'implémentation du média
* @param {Object} [options] Objet d'options à utiliser par getDescription
* @param {MediaStreamConstraints} [options.constraints] MediaStreamConstraints https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints
* @param {Object} [options.peerConnectionOptions] Si cela est défini, il recréera la connexion homologue avec les nouvelles options
* @param {Array} [modifiers] Tableau avec des modificateurs de description à usage unique
* @returns {Promise} Promesse qui se résout une fois la description définie
*/
setDescription : { écriture : vrai, valeur : fonction setDescription(sessionDescription, options, modificateurs) {
var _this = ceci;
var self = this;
options = options || {};
if (options.peerConnectionOptions) {
this.initPeerConnection(options.peerConnectionOptions);
}
modifiers = modifiers || [];
if (!Array.isArray(modifiers)) {
modifiers = [modifiers];
}
modifiers = modifiers.concat(this.modifiers);
var description = {
type: this.hasOffer('local') ? 'answer' : 'offer',
sdp: sessionDescription
};
return SIP.Utils.Promise.resolve().then(function () {
// Media should be acquired in getDescription unless we need to do it sooner for some reason (FF61+)
if (this.shouldAcquireMedia && this.options.alwaysAcquireMediaFirst) {
return this.acquire(this.constraints).then(function () {
this.shouldAcquireMedia = false;
}.bind(this));
}
}.bind(this)).then(function () {
return SIP.Utils.reducePromises(modifiers, description);
}).catch(function (e) {
if (e instanceof SIP.Exceptions.SessionDescriptionHandlerError) {
throw e;
}
var error = new SIP.Exceptions.SessionDescriptionHandlerError("setDescription", e, "The modifiers did not resolve successfully");
_this.logger.error(error.message);
self.emit('peerConnection-setRemoteDescriptionFailed', error);
throw error;
}).then(function (modifiedDescription) {
self.emit('setDescription', modifiedDescription);
return self.peerConnection.setRemoteDescription(modifiedDescription);
}).catch(function (e) {
if (e instanceof SIP.Exceptions.SessionDescriptionHandlerError) {
throw e;
}
// Check the original SDP for video, and ensure that we have want to do audio fallback
if (/^m=video.+$/gm.test(sessionDescription) && !options.disableAudioFallback) {
// Do not try to audio fallback again
options.disableAudioFallback = true;
// Remove video first, then do the other modifiers
return _this.setDescription(sessionDescription, options, [SIP.Web.Modifiers.stripVideo].concat(modifiers));
}
var error = new SIP.Exceptions.SessionDescriptionHandlerError("setDescription", e);
_this.logger.error(error.error);
_this.emit('peerConnection-setRemoteDescriptionFailed', error);
throw error;
}).then(function setRemoteDescriptionSuccess() {
if (self.peerConnection.getReceivers) {
self.emit('setRemoteDescription', self.peerConnection.getReceivers());
} else {
self.emit('setRemoteDescription', self.peerConnection.getRemoteStreams());
}
self.emit('confirmed', self);
});
} },`
Inspecter le code js m'a montré que "modifiedDescription.sdp" est un objet de récursivité pour sdp
S'il vous plaît poster des journaux complets dans un gist. Essayez-vous de modifier SDP vous-même ou essayez-vous simplement de mettre à jour une version précédente vers la version actuelle ?
Journaux de l'astérisque ou de la console du navigateur ? Et besoin de traceSip : vrai, dans la console du navigateur ?
Je commence à utiliser sip.js à partir de la version 0.11.4. Je ne suis pas modifié sdp.
Console du navigateur
[gist] (https://gist.github.com/kakabara/d39058805af90637a62931893900fb55) mais dans firefox, j'ai eu une erreur avec "Échec de l'analyse SDP : erreur d'analyse SDP à la ligne 1 : fin de ligne au-delà de la fin du tampon". A voir sur 326 lignes.
Dans Google CHrome, obtenez mes exceptions avec l'échec de l'analyse setRemoteDescription
Asterisk n'envoie pas de candidats ICE. Le problème dans l'essentiel n'est pas le même problème que vous avez indiqué ci-dessus.
Désolé, pour mon problème incorrect, c'est le premier. Je comprends correctement ce que mon appelant envoie au candidat de glace, mais l'astérisque ne l'envoie pas à un autre client ?
Désolé. Je ne comprends pas. WebRTC nécessite ICE et DTLS. Cela ressemble à un problème d'astérisque, je vais donc le clore. Veuillez suivre le projet Asterisk sur vos problèmes là-bas.