Hallo,
Ich habe das folgende Problem beim Versuch, von sipjs 0.15.11 auf sjipjs 0.16.1 zu migrieren. Übersehe ich hier etwas?
Beschreibe den Fehler
Die Eigenschaft 'peerConnection' existiert nicht für den Typ 'SessionDescriptionHandler'
Protokolle
error TS2339: Property 'peerConnection' does not exist on type 'SessionDescriptionHandler'.
Reproduzieren
Schritte zum Reproduzieren des Verhaltens:
// 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();
}
Erwartetes Verhalten
Die Eigenschaft 'peerConnection' sollte im Typ 'SessionDescriptionHandler' vorhanden sein.
Beobachtetes Verhalten
Die Kompilierung wirft den Fehler:
Die Eigenschaft 'peerConnection' existiert nicht für den Typ 'SessionDescriptionHandler'
Umweltinformationen
Genauer gesagt existiert peerConnection in der Datei platform/web/session-description-handler/session-description-handler.ts
public peerConnection!: RTCPeerConnection;
Aber nicht auf api/session-description-handler.ts
Ist es deshalb nicht Teil der Definitionsdatei?
Ich habe das gleiche Problem und importiere den SessionDescriptionHandler von '_sip.js/lib/platform/web_', um es zu beheben. Bisher funktioniert es gut.
Alles in _'sip.js/lib/platform/web'_ wird in den Web
Namespace exportiert, Sie können also auch import { Web } from "sip.js"
und dann als Web.SessionDescriptionHandler
referenzieren.
Typ peerConnection
existiert nicht auf der SessionDescriptionHandler
Schnittstelle. Die Idee ist, dass Sie eine SDH für eine Umgebung schreiben könnten, die nicht SIP.js ist und daher keine Peer-Verbindung hat. Importieren und verwenden Sie Typen aus Web.SessionDescriptionHandler
wenn Sie wissen, dass Sie die Webimplementierung verwenden. Dies ist beabsichtigt.
Falls jemand dieses Problem auch haben sollte. So hat es bei mir funktioniert:
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();
}
Verbesserungen und Anmerkungen werden gerne entgegengenommen.
Hilfreichster Kommentar
Ich habe das gleiche Problem und importiere den SessionDescriptionHandler von '_sip.js/lib/platform/web_', um es zu beheben. Bisher funktioniert es gut.