Sip.js: DOMException : échec de l'exécution de 'setRemoteDescription' sur 'RTCPeerConnection' : échec de l'analyse de SessionDescription. [objet Objet] Ligne attendue : v=

Créé le 12 oct. 2018  ·  8Commentaires  ·  Source: onsip/SIP.js

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);
    });
  } },`

Tous les 8 commentaires

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.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

seanbright picture seanbright  ·  3Commentaires

Juli0GT picture Juli0GT  ·  5Commentaires

tm1000 picture tm1000  ·  12Commentaires

kyle9292 picture kyle9292  ·  3Commentaires

josephfrazier picture josephfrazier  ·  26Commentaires