Sip.js: Properti 'peerConnection' tidak ada pada jenis 'SessionDescriptionHandler'

Dibuat pada 28 Mei 2020  ·  5Komentar  ·  Sumber: onsip/SIP.js

Halo,
Saya mendapat masalah berikut ketika mencoba bermigrasi dari sipjs 0.15.11 ke sjipjs 0.16.1. Apakah saya melewatkan sesuatu di sini?

Jelaskan bugnya
Properti 'peerConnection' tidak ada pada jenis 'SessionDescriptionHandler'

Log

error TS2339: Property 'peerConnection' does not exist on type 'SessionDescriptionHandler'.

Untuk Mereproduksi
Langkah-langkah untuk mereproduksi perilaku:

  1. Buat agen pengguna dan tangani panggilan masuk
  2. Coba lampirkan media seperti yang disebutkan di sini lampirkan-media
    Menggunakan kode ini
// Assumes you have a media element on the DOM
const mediaElement = document.getElementById('mediaElement');

const remoteStream = new MediaStream();
function setupRemoteMedia(session: Session) {
  session.sessionDescriptionHandler.peerConnection.getReceivers().forEach((receiver) => {
    if (receiver.track) {
      remoteStream.addTrack(receiver.track);
    }
  });
  mediaElement.srcObject = remoteStream;
  mediaElement.play();
}

Perilaku yang diharapkan
Properti 'peerConnection' harus ada pada tipe 'SessionDescriptionHandler'

Perilaku yang diamati
Kompilasi melempar kesalahan:
Properti 'peerConnection' tidak ada pada jenis 'SessionDescriptionHandler'

Informasi Lingkungan

  • SipJS 0.16.1
Typescript

Komentar yang paling membantu

Saya menemui masalah yang sama, dan saya mengimpor SessionDescriptionHandler dari '_sip.js/lib/platform/web_' untuk memperbaikinya, sejauh ini berfungsi dengan baik.

Semua 5 komentar

Untuk lebih tepatnya peerConnection memang ada di platform file

  public peerConnection!: RTCPeerConnection;

Tapi tidak di api/session-description-handler.ts

Apakah itu sebabnya itu bukan bagian dari file definisi?

Saya menemui masalah yang sama, dan saya mengimpor SessionDescriptionHandler dari '_sip.js/lib/platform/web_' untuk memperbaikinya, sejauh ini berfungsi dengan baik.

Segala sesuatu di _'sip.js/lib/platform/web'_ diekspor dalam ruang nama Web , jadi Anda juga dapat import { Web } from "sip.js" dan kemudian merujuk sebagai Web.SessionDescriptionHandler .

Ketik peerConnection tidak akan ada di Antarmuka SessionDescriptionHandler . Idenya adalah Anda dapat menulis SDH untuk lingkungan yang bukan SIP.js dan karena itu tidak memiliki koneksi peer. Impor dan gunakan jenis dari Web.SessionDescriptionHandler jika Anda tahu Anda menggunakan implementasi web. Ini disengaja.

Jika seseorang juga harus memiliki masalah ini. Begitulah cara kerjanya untuk saya:

import '{ SessionDescriptionHandler } from 'sip.js/lib/platform/web'

case SessionState.Established:
        let sessionDescriptionHandler: SessionDescriptionHandler = inviter.sessionDescriptionHandler as SessionDescriptionHandler;
        setupRemoteMedia(sessionDescriptionHandler);
        break;

function setupRemoteMedia(session: SessionDescriptionHandler) {
  let receiversList: any = session.peerConnection.getReceivers();
  receiversList.forEach((receiver: RTCRtpReceiver) => {
    if (receiver.track) {
      remoteStream.addTrack(receiver.track);
    }
  });
  mediaElement.srcObject = remoteStream;
  mediaElement.play();
}

Perbaikan dan komentar diterima dengan senang hati.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

seanbright picture seanbright  ·  3Komentar

slavikbialik picture slavikbialik  ·  7Komentar

Juli0GT picture Juli0GT  ·  5Komentar

kyle9292 picture kyle9292  ·  3Komentar

Pjata picture Pjata  ·  11Komentar