Sip.js: DOMException: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ setRemoteDescription для RTCPeerConnection: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ синтаксичСский Π°Π½Π°Π»ΠΈΠ· SessionDescription. [ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Object] ОТидаСмая строка: v =

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 12 ΠΎΠΊΡ‚. 2018  Β·  8ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: onsip/SIP.js

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ
НСкоррСктно Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

DOMException: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ setRemoteDescription для RTCPeerConnection: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ синтаксичСский Π°Π½Π°Π»ΠΈΠ· SessionDescription. [ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Object] ОТидаСмая строка: v =
ΠΏΠΎ адрСсу http: //localhost/sip-0.11.4%20 (1) .js: 9733: 38

Π£ мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠ΄Π°:

`/ **
* УстановитС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ описаниС Π½Π° Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°
* @param {String} sessionDescription ОписаниС, прСдоставляСмоС SIP-сообщСниСм, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°.
* @param {Object} [options] ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ getDescription
* @param {MediaStreamConstraints} [options.constraints] MediaStreamConstraints https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints
* @param {Object} [options.peerConnectionOptions] Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ установлСн, ΠΎΠ½ воссоздаСт ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²ΠΎΠ΅ соСдинСниС с Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.
* @param {Array} [modifiers] Массив с ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ описания
* @returns {Promise} ΠžΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ послС задания описания
* /
setDescription: {Writable: true, value: function setDescription (sessionDescription, options, modifiers) {
var _this = this;

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

ВсС 8 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄Π° js ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ "modifiedDescription.sdp" являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ рСкурсии для sdp.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, размСститС ΠΏΠΎΠ»Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². Π’Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ SDP ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ просто ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ?

Π–ΡƒΡ€Π½Π°Π»Ρ‹ ΠΈΠ· Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ ΠΈΠ»ΠΈ консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°? И Π½ΡƒΠΆΠ½ΠΎ traceSip: true, Π² консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°?
ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ sip.js с вСрсии 0.11.4. Π― Π½Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π» sdp.

Консоль Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

[gist] (https://gist.github.com/kakabara/d39058805af90637a62931893900fb55), Π½ΠΎ Π² firefox я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡˆΠΈΠ±ΠΊΡƒ «НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SDP: ошибка Π°Π½Π°Π»ΠΈΠ·Π° SDP Π² строкС 1: ΠΊΠΎΠ½Π΅Ρ† строки Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠ½Ρ†Π° Π±ΡƒΡ„Π΅Ρ€Π°Β». Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ это Π½Π° 326 строках.
Π’ Google Chrome ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ синтаксичСским Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ setRemoteDescription

Asterisk Π½Π΅ отправляСт ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ² Π½Π° ICE. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² сути Π½Π΅ Ρ‚Π°, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅.

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, ΠΈΠ·-Π·Π° ΠΌΠΎΠ΅ΠΉ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, это ΠΏΠ΅Ρ€Π²ΠΎΠ΅. Π― ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ понимаю, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π°Π±ΠΎΠ½Π΅Π½Ρ‚ отправляСт лСдяного ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°, Π½ΠΎ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° Π½Π΅ отправляСт это Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ?

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅. Π― Π½Π΅ понимаю. WebRTC Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ICE ΠΈ DTLS. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Asterisk, поэтому я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ это. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Asterisk ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ‚Π°ΠΌ.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ