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:
// 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
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.
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.