Sip.js: DOMException: Gagal menjalankan 'setRemoteDescription' di 'RTCPeerConnection': Gagal mengurai SessionDescription. [objek Objek] Garis harapan: v=

Dibuat pada 12 Okt 2018  ·  8Komentar  ·  Sumber: onsip/SIP.js

Jelaskan bugnya
Tidak bekerja lib dengan benar.

DOMException: Gagal menjalankan 'setRemoteDescription' di 'RTCPeerConnection': Gagal mengurai SessionDescription. [objek Objek] Garis harapan: v=
di http://localhost/sip-0.11.4%20 (1).js:9733:38

Saya mendapat masalah di bagian kode yang sama:

` /**
* Atur deskripsi jarak jauh ke implementasi media yang mendasarinya
* @param {String} sessionDescription Deskripsi yang diberikan oleh pesan SIP untuk ditetapkan pada implementasi media
* @param {Object} [options] Opsi objek yang akan digunakan oleh getDescription
* @param {MediaStreamConstraints} [options.constraints] MediaStreamConstraints https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints
* @param {Object} [options.peerConnectionOptions] Jika ini disetel, koneksi rekan akan dibuat ulang dengan opsi baru
* @param {Array} [pengubah] Array dengan pengubah deskripsi penggunaan satu kali
* @returns {Janji} Janji yang
*/
setDescription: { dapat ditulis: true, nilai: function setDescription(sessionDescription, options, modifiers) {
var _ini = ini;

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

Semua 8 komentar

Periksa kode js menunjukkan kepada saya bahwa "modifiedDescription.sdp" adalah objek rekursi untuk sdp

Silakan posting log lengkap di Gist. Apakah Anda mencoba memodifikasi SDP sendiri, atau ini hanya mencoba memperbarui dari versi sebelumnya ke versi saat ini?

Log dari asterisk atau konsol browser? Dan perlu melacakSip: benar, di konsol browser?
Saya mulai menggunakan sip.js dari versi 0.11.4. Saya tidak dimodifikasi sdp.

Konsol peramban

[Gist] (https://Gist.github.com/kakabara/d39058805af90637a62931893900fb55) tetapi di firefox saya mendapat kesalahan dengan "Gagal mengurai SDP: SDP Parse Error pada baris 1: Akhir baris di luar akhir buffer." Lihat di 326 baris.
Di Google CHrome dapatkan pengecualian saya dengan parse setRemoteDescription yang gagal

Asterisk tidak mengirimkan kandidat ICE. Masalah pada intinya bukanlah masalah yang sama yang Anda nyatakan di atas.

Maaf, untuk masalah saya yang salah, ini yang pertama. Saya mengerti benar apa yang saya, penelepon mengirim kandidat es, tetapi tanda bintang tidak mengirim ke klien lain ini?

Maaf. Saya tidak mengerti. WebRTC membutuhkan ICE dan DTLS. Ini terlihat seperti masalah Asterisk jadi saya akan menutup ini. Harap tindak lanjuti proyek Asterisk tentang masalah Anda di sana.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat